我有两个列表,其中包含标题为Alphabet和Employee的名称
List<Item> list1 = new ArrayList<Item>();
List<Item> list2 = new ArrayList<Item>();
public List<Item> getList1() {
list1.add("A");
list1.add("A1");
list1.add("A2");
list1.add("A3");
list1.add("B");
list1.add("B1");
list1.add("B2");
list1.add("B3");
list1.add("C");
list1.add("C1");
list1.add("C2");
list1.add("C3");
return list1;
}
public List<Item> getList2() {
list2.add("A");
list2.add("A4");
list2.add("A5");
list2.add("A6");
list2.add("B");
list2.add("B4");
list2.add("B5");
list2.add("B6");
list2.add("C"));
list2.add("C4");
list2.add("C5");
list2.add("C6");
return list2;
}
我想合并两个字母表的列表基础,输出应该如下
list1.add("A");
list1.add("A1");
list1.add("A2");
list1.add("A3");
list1.add("A4");
list1.add("A5");
list1.add("A6");
list1.add("B");
list1.add("B1");
list1.add("B2");
list1.add("B3");
list1.add("B4");
list1.add("B5");
list1.add("B6");
list1.add("C");
list1.add("C1");
list1.add("C2");
list1.add("C3");
list1.add("C4");
list1.add("C5");
list1.add("C6");
请有人告诉我两个数组列表如何根据A,B,C等字母进行合并。
答案 0 :(得分:2)
而不是List
使用Set
而当您完成合并时 - 将其排序!
List<String> lst1 = getList1();
List<String> lst2 = getList2();
lst1.addAll(lst2);
Set<String> set = new HashSet<String>(lst1);
lst1 = new ArrayList<String>();
lst1.addAll(set);
lst1.sort(Comparator.<String>naturalOrder());
for(String item: lst1) {
System.out.println(item);
}
<强>输出强>
A
A1
A2
A3
A4
A5
A6
B
B1
B2
B3
B4
B5
B6
C
C1
C2
C3
C4
C5
C6
答案 1 :(得分:0)
您需要做的是创建Set interface
并添加其中的所有数据,即list1
和list2
内的数据,以消除重复单词。在您需要addAll
set
内的新List
内的内容并对其进行排序之后。
<强>样品:强>
Set<String> s = new HashSet<String>();
getList2();
getList1();
for(String s2 : list2)
s.add(s2);
for(String s2 : list1)
s.add(s2);
List<String> s3 = new ArrayList<String>();
s3.addAll(s);
Collections.sort(s3);
for(String s2 : s3)
System.out.println(s2);
<强>结果:强>
A
A1
A2
A3
A4
A5
A6
B
B1
B2
B3
B4
B5
B6
C
C1
C2
C3
C4
C5
C6
答案 2 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
如果您不想在集合中复制,您应该考虑为什么要使用允许重复的集合。删除重复元素的最简单方法是将内容添加到Set(不允许重复),然后将Set添加回ArrayList:
ArrayList al = new ArrayList();
// add elements to al, including duplicates
HashSet hs = new HashSet();
hs.addAll(al);
al.clear();
al.addAll(hs);
最重要的是,这会破坏ArrayList中元素的排序。
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
List<String> finalList = new ArrayList<String>();
list1 = getList1();
list2 = getList2();
HashSet<String> hs = new HashSet<String>();
hs.addAll(list1);
hs.addAll(list2);
finalList.addAll(hs);
Collections.sort(finalList);
for(String row : finalList){
System.out.print(row);
}