合并列表并维护数据的顺序,没有重复

时间:2017-01-12 02:28:51

标签: java

我有3个数据列表,我需要合并并维护插入顺序,不应该有任何重复,

 For Eg:
 List l1=new LinkedList<>();
    l1.add("b");
    l1.add("a");
    l1.add("o");
    List l2=new LinkedList<>();
    l2.add("m");
    l2.add("n");
    List l3=new LinkedList<>();
    l3.add("m");
    l3.add("n");
    l3.add("o");
After merging the value should be
First Merging  b a o m n      
Second merging b a m n o

输入不会按顺序修改。如果该值首先存在,则它应该仅在第一个。

编辑以包括OP的附加要求:

  

首先记录不应该移到中间。如果是l3.add(“b”);在   首先,记录应该给[a,m,b,n,o],但我们有b in   第一个列表(l1)也应该是b,a,m,n,o。

2 个答案:

答案 0 :(得分:2)

List<String> result = new LinkedList<>();
result.addAll(l1);
result.removeAll(l2);
result.addAll(l2);
result.removeAll(l3);
result.addAll(l3);

答案 1 :(得分:0)

这将获得您正在寻找的结果。 for / each循环遍历other中的每个元素,将它们添加到base,但删除现有元素(如果它在那里)。这将适用于您的字符串,因为在此示例中它们是从字符串池中提取的。否则你将不得不做更多的比较。

public List<String> merge(List<String> base, List<String> other) {
    for(String s : other) {
        if(base.indexOf(s) != 0)
            base.remove(s);
        else continue;
        base.add(s);
    }
    return base;
}

编辑了第一个元素未被替换的额外要求。