扫描2D ArrayList以获取第一个列表中的唯一元素

时间:2013-08-14 11:41:09

标签: java arrays arraylist

我已经被困了几个小时了,找不到解决方案。 我想比较两个ArrayLists,我想将每个唯一元素从列表中的一个放入另一个arrayList。

例如,如果我的一个arrayList包含{0,1,2,3},并且我想将它与{{1},{2},{3}}进行比较,我想在我的''中收到{2} unqiue'arraylist 请帮帮我

编辑后

我会更具体。 ArrayList1 = {0,1,2,3,4}和ArrayList2 = {{0,1} {0,1,2}}所以我想要的是在单个ArrayList中拥有ArrayList1中唯一的唯一。在这个例子中,我想要ArrayList3 = {3,4}

2 个答案:

答案 0 :(得分:0)

您可以使用List的方法boolean removeAll(Collection c)

它将从此列表中删除指定集合中包含的所有元素。因此,在调用此列表后,您的列表将包含唯一元素。

假设你有arrayList1arrayList2,你可以像这样比较它们:

arrayList1.removeAll(arrayList2);

现在arrayList1只包含唯一元素。

答案 1 :(得分:0)

如果我正确解释您的问题,您想在2个列表中形成新的常用元素列表吗?如果是,则遍历其中一个列表并检查该元素的第二个列表contains(Object)是否添加到第三个列表。我现在无法提供代码示例,但是当我到达计算机时,我很乐意编辑它(如果需要的话)。

编辑:

代码可能看起来像这样:

    private static <T> List<T> getUniqueList(final List<T> first, final List<T> second){
    final List<T> unique = new ArrayList<T>();
    for(final T element : first)
        if(second.contains(element))
            unique.add(element);
    return unique;
}

或者如果您使用的是Java 8:

    private static <T> List<T> getUniqueList(final List<T> first, final List<T> second){
    final List<T> unique = new ArrayList<>();
    first.stream().filter(second::contains).forEach(unique::add);
    return unique;
}