gpt4 book ai didi

java - 如何比较两个包含 Java 中同一类对象的 Arraylists?

转载 作者:行者123 更新时间:2023-11-29 05:42:34 24 4
gpt4 key购买 nike

我有 2 个不同大小的列表,它们属于具有属性的相同 class Officer:

Integer id;
Integer level;
String role;

我想比较这两个列表 list1 和 list2,以便我可以生成两个新列表 insertLst 和 deleteList。

列表 1 和列表 2 都包含独特的元素。

insertLst:此列表包含列表 1 而不是列表 2 中的项目。

deleteList:此列表包含 list2 而不是 list1 中的项目。

我不知道应该怎么做,可能是使用 org.apache.commons.collections.CollectionUtils API。

你能给我一个生成这两个列表 insertLst 和 deleteList 的 java 代码吗?

最佳答案

如果你想使用 org.apache.commons.collections.CollectionUtils 那么你应该使用 subtract 方法。

Collection<Officer> insertList= CollectionUtils.subtract(list1, list2);
Collection<Officer> deleteList = CollectionUtils.subtract(list2, list1);

或者你可以这样写(传递在方法中填充的空列表)而不是将另一个库添加到你的依赖项中:

static <T> void process(List<T> list1, List<T> list2, List<T> insertList, List<T> deleteList) {
for (T t: list1) {
if (!list2.contains(t)) {
insertList.add(t);
}
}
for (T t: list2) {
if (!list1.contains(t)) {
deleteList.add(t);
}
}
}

不要忘记在这两种情况下为您的类主任覆盖 equals 和 hashcode 方法。请引用here解释

关于java - 如何比较两个包含 Java 中同一类对象的 Arraylists?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16960479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com