gpt4 book ai didi

java - 考虑某个字段,从列表中删除对象重复项

转载 作者:行者123 更新时间:2023-12-01 23:30:55 26 4
gpt4 key购买 nike

我有一个具有不同 cdOption、cdVersion 和 cdDescription 的对象列表。

其中一些具有相同的 cdOption 但不同的 cdVersion,并且我需要获取具有不同 cdOption 的对象列表,因此我尝试仅考虑 cdOption 字段来删除重复项。

到目前为止我已经得到了这个:

List<Option> noDuplicateOptions = new ArrayList<Option>();
List<Option> options = resp.get(RESULT);

for (Option option : options) {
for (Option noDuplicateOption : noDuplicateOptions) {
if (option.getCdOption().equals(noDuplicateOption.getCdOption())) {
noDuplicateOptions.add(option);
}
}
}

return noDuplicateOptions;

但是有没有更快、更优化的方法来做到这一点?

编辑:我使用的解决方案是重写 Option 中的 equals 方法,如下所示:

public boolean equals(Object obj) {
return obj instanceof Option && ((Option)obj).getCdOption() == cdOption;
}

那么我可以这样做:

List<Option> options = resp.get(RESULT);

Map<String, Option> map = new HashMap<String, Option>();
for (Option option : options) {
map.put(option.getCdOption(), option);
}
options.clear();
options.addAll(map.values());

return options;

最佳答案

程序执行永远不会到达此循环内部,因为 noDuplicateOptions 中没有元素:

for (Option noDuplicateOption : noDuplicateOptions) {
// ...
}

我几乎可以肯定您的代码返回一个空列表。

关于java - 考虑某个字段,从列表中删除对象重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314806/

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