gpt4 book ai didi

java - 如何在数组列表中搜索重复对象(由一个字段确定)并合并它们

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:00 26 4
gpt4 key购买 nike

我有一个名为 PriceList 的类

class PriceList {
Integer priceListID;
...
}

我已经在另一个类中扩展它以适应一些用户功能

class PriceListManager extends PriceList{
boolean user;
boolean manager;
}

一个用户可以有一个 PriceListManager 对象的 ArrayList,它可以包含重复项(相同的 PriceListID),所以我想找到这些重复项并比较它们的字段以创建一个条目例如:

{ PriceListID = 5; user = false; manager = true; 
PriceListID = 5; user = true; manager = false; }

应该变成

PriceListID = 5; user = true; manager = true;

最好的方法是什么?我已经为两个类设置了 equals 方法,PriceList 通过检查两个对象的 ID 来比较两个对象,而 PriceListManagers 则这样做并检查两个 boolean 字段是否相同。

编辑:我需要找到任何具有相同 ID 的对象,这样我就可以合并它们的属性并只留下一个对象。

最佳答案

这样的事情怎么样:

    Map<Integer, PriceListManager> map = new HashMap<Integer, PriceListManager>();

for (PriceListManager manager : yourArrayList) {

if (!map.contains(manager.getPriceListID())) {
map.put(manager.getPriceListID(), manager);
}

if (manager.isUser()) {
map.get(manager.getPriceListID()).setIsUser(true);
}

if (manager.isManager()) {
map.get(manager.getPriceListID()).setIsManager(true);
}
}

List<PriceListManager> newList = new ArrayList<PriceListManager>();
newList.addAll(map.values());

// Do stuff with newList....

关于java - 如何在数组列表中搜索重复对象(由一个字段确定)并合并它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373381/

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