2017-04-18 105 views
1

我有两个列表:比较两个列表中的Java

list1 = [1,2,3] 
list2 = [2,3,4] 

我要带两个列表中的所有元素,没有相同的价值,每一个元素将重复一次,例如:

list3 = [1,2,3,4] 

list3将得到list1list2的元素。

+2

你有问题吗?你卡在哪里? – assylias

+0

循环遍历第一个列表并将不在列表2中的任何值复制到它中。 然后对列表进行排序。 –

+3

将'List'添加到'Set'并且你完成了。 – SomeJavaGuy

回答

3

快速的方法是使用一组例如:

输入

List<Integer> list1 = Arrays.asList(1,2,3); 

List<Integer> list2 = Arrays.asList(2,3,4); 

将您的列表添加到Set

Set<Integer> set = new TreeSet<>(); 
set.addAll(list1);   
set.addAll(list2); 

输出

[1, 2, 3, 4] 
+0

谢谢兄弟,它的工作 –

+0

欢迎您@Outmen –

1
for(Integer i : list2){ 
    if(!list1.contains(i)){ 
     list1.add(i); 
    } 
} 
+1

谢谢,这是工作 –

1

从第二列表添加唯一值的第一个:

for (int i = 0; i < list2.size(); i++) 
    if (!list1.contains(list2.get(i)) 
     list1.add(list2.get(i)); 
+0

谢谢,这是工作 –

1

你可以做到这一点正确:

List<Integer> A = Arrays.asList(1, 2, 3); 
List<Integer> B = Arrays.asList(2,3,4); 

List<Integer> D = ListUtils.subtract(B, A);// contain 4 

输出

List<Integer> C = ListUtils.union(A, D); // 1,2,3,4