代码之家  ›  专栏  ›  技术社区  ›  user9130953

如何找出两个列表之间的差异

  •  0
  • user9130953  · 技术社区  · 6 年前

    我有两份清单。一个是,

     public static final List<Integer> NATURAL_MANDATORY = 
                    Collections.unmodifiableList(Arrays.asList(1,2,4,5));
    

    第二个列表如下:,

    List<Integer> MandatoryList = new ArrayList<Integer>();
    
    MandatoryList = [1,2];
    

    我想找出两个列表的区别,因为我已经写了

    Constants.NATURAL_MANDATORY.removeAll(MandatoryList);
    

    我正在

    原因:java。lang.UnsupportedOperationException

    因为它是不可修改的列表,有什么方法可以找出它们之间的区别吗

    2 回复  |  直到 6 年前
        1
  •  0
  •   stinepike    6 年前

    您无法编辑 unmodifiableList 因为他们是 read-only 。并且在 removeAll 方法,则删除第二个列表中第一个列表的元素。因此无法在中执行此操作 NATURAL_MANDATORY 。因此,如果必须这样做,那么可以将元素复制到新的 List 并执行此操作。

        2
  •  0
  •   hoan    6 年前

    您试图修改 unmodifiableList ,这将导致 UnsupportedOperationException

    您可以使用 CollectionUtils.subtract() 来自Apache Commons Collections 4.0:

    List<Integer> diffList = new ArrayList<>(CollectionUtils.subtract(NATURAL_MANDATORY, MandatoryList));