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;