根据员工字母表(合并)合并两个列表

时间:2014-07-29 04:22:48

标签: java android

我有两个列表,其中包含标题为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等字母进行合并。

3 个答案:

答案 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并添加其中的所有数据,即list1list2内的数据,以消除重复单词。在您需要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);
}