今天凯哥交给我一个任务,在报警模版中对比新旧两个数据,找出其中不同的部分,之前是把不同的数据转string做了对比,并没有对list中的对象做判断,修改完之后记录一下。
list做对比,如果 list 里面的数据是乱序的,需要对list排序。使用 Collections.sort()就可以了。但是list里面的对象不继承于comparable接口的话,要自己处理一下。方法就是实现接口,重写comparTo,我比较懒,就直接使用lambada的stream转string了。
准备工作做完,接下来就要开始对比了,我的第一个版本就是使用list.removeIf( lambada... ),用另一个list做判断是否包含,并remove,最后合并。相当简单粗暴。上代码。
ArrayList lst1 = new ArrayList<>(Arrays.asList("a","b","e"));
ArrayList lst2 = new ArrayList<>(Arrays.asList("b","e","a"));
Collections.sort(lst1);
Collections.sort(lst2);
if (lst1.equals(lst2)){
}else{
lst1.removeAll(lst2);
lst1.addAll(lst2);
System.out.println(Arrays.toString(lst1.toArray()));
}
后来要对list中的数据单独抽出