我有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。
答案 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;
}
编辑了第一个元素未被替换的额外要求。