我有两个数组列表,例如。
List<Date> a;
contains : 10/10/2014, 10/11/2016
List<Date> b;
contains : 10/10/2016
我如何在lista
和b
之间进行检查,以便返回b
中缺少的值?例如10/10/2014
您可以将它们转换为Set
集合,并对它们执行设置差异操作。
像这样:
Set<Date> ad = new HashSet<Date>(a);
Set<Date> bd = new HashSet<Date>(b);
ad.removeAll(bd);
如果你只想在b中找到缺失的值,你可以这样做:
List toReturn = new ArrayList(a);
toReturn.removeAll(b);
return toReturn;
如果您想找出任一列表中存在的值,您可以执行两次上层代码。使用更改的列表。
我看起来很相似,但我想要两个列表中的差异(两个列表之间的不常见元素)。
假设我有:
List<String> oldKeys = Arrays.asList("key0","key1","key2","key5");
List<String> newKeys = Arrays.asList("key0","key2","key5", "key6");
我想知道哪个键被添加了,哪个键被删除了,即我想得到(key1, key6)
使用org. apache.公共.集合.CollationUtils
List<String> list = new ArrayList<>(CollectionUtils.disjunction(newKeys, oldKeys));
结果
["key1", "key6"]