我有一个具有不同 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;