如何将两个列表字符串合并为一个列表

3

我有两个不同的列表字符串,

List<String> A= [1,2,3,4]; 
List<String> B= [1,2,5,6]; 

我希望将两个列表合并成一个新的字符串列表,代码如下:

List C = new ArrayList();

合并两个字符串列表的方法如下所示:

    C = [1,2,3,4,5,6];

1
A.addAll(B) 将会把 B 中的所有元素添加到 A 中。 - Subin Sebastian
使用一个集合(Set)实现合并而不重复。 - Kiran Mohan
如果你已经得到了答案,请接受它。如果你仍然没有找到想要的答案,请粘贴你的问题,包括异常信息(如果有)。 - Rais Alam
如何得出这个结果:C = [1,2] - 只有独特的项? - Roman Soviak
8个回答

4

使用 Collection.addAll() 方法和 TreeSet 类型,可以去除重复元素并保持结果排序。

Set<String> c = new TreeSet<String>(a); //create a Set with all the elements in a
c.addAll(b); //add all the elements in b

3

这样做:

listOne.removeAll(listTwo);
listTwo.addAll(listOne);
Collections.sort(listTwo);

如果您不想对其进行排序,可以删除第三行。

这个比较好,但只有在原始列表可以被修改的情况下才能实现。 - Kiran Mohan
如果你不想修改第一个列表,那么你可以将它存储在一个临时列表中。这是一种非常常见的编码方案 :) - Abhishek_Mishra

3
这将使它们合并。
combined = new ArrayList<String>();
combined.addAll(A);
combined.addAll(B);

这将获取唯一值。
List<String> uniques = new ArrayList<String>(new HashSet<String>(combined));

0

合并这两个列表的方法有两种:使用 List#addAllSet#addAll。两者之间的主要区别在这里详细解释:集合 Set 和列表 List 的区别是什么?

根据您的请求,应该使用 Set 合并两个列表而不重复项目。

List<String> lstA = new ArrayList<String>();
lstA.add("1");
lstA.add("2");
lstA.add("3");
lstA.add("4");
List<String> lstB = new ArrayList<String>();
lstA.add("1");
lstA.add("2");
lstA.add("5");
lstA.add("6");
Set<String> lstC = new LinkedHashSet<String>();
lstC.addAll(A);
lstC.addAll(B);
List<String> lstAB = new ArrayList(lstC);

0
List<String> A= new ArrayList<String>();
List<String> B= new ArrayList<String>();

Set<String> set = new TreeSet<String>(A);
set.addAll(B);
System.out.println(new ArrayList<String>(set));

1
TreeSet 维护数据的有序性,而非排序。LinkedHashSet 维护数据的顺序性,但不保证有序。 - Luiggi Mendoza

0
要按排序顺序获取一个 List<String>,请使用以下代码片段。
    String a[] = {"1","2","3","4"};
    String b[] = {"1","2","5","6"};
    List<String> A= Arrays.asList(a); 
    List<String> B= Arrays.asList(b); 

    Set<String> CTemp = new TreeSet<>();  
    CTemp.addAll(A);
    CTemp.addAll(B);

    List<String> C = new ArrayList<>(CTemp);

0

声明 A 和 B 的方式似乎有误。

然而,如果要将两个列表 A 和 B 合并成 C,您可以使用以下代码: C.addAll(A); C.addAll(B);


0
  Set<String> set = new TreeSet<String>(A); // for keeping the output sorted else you can also use java.util.HashSet
  set.addAll(B);
  List<String> finalList = new ArrayList<String>(set);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接