提问者:小点点

如何返回两个列表之间的差异?


我有两个数组列表,例如。

List<Date> a;
contains : 10/10/2014, 10/11/2016

List<Date> b;
contains : 10/10/2016

我如何在listab之间进行检查,以便返回b中缺少的值?例如10/10/2014


共3个答案

匿名用户

您可以将它们转换为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"]