私はDBから受信したDTOのリストを持っており、IDを持っています。リストに指定されたIDのオブジェクトが含まれていることを確認します。この場合、期待されるフィールドを持つオブジェクトを作成すると、Object.equals()のcontains()呼び出しが同じではないため、おそらく役に立ちません。オブジェクトのリストに指定されたフィールド値を持つものが含まれているかどうかを確認しますか?
インタフェースHasId
を作成し、すべてのDTOで実装し、contains(Long id)
メソッドを持つ新しいクラスを継承したArrayListを継承しました。
public interface HasId {
void setId(Long id);
Long getId();
}
public class SearchableList<T extends HasId> extends ArrayList<T> {
public boolean contains(Long id) {
for (T o : this) {
if (o.getId() == id)
return true;
}
return false;
}
}
が、この場合には、私はSearchableListに型キャスト一覧とArrayListのことができない...私はそれと一緒に暮らすだろう が、私は自転車を発明ないよことを確認したかったのです。
EDIT(10月'16):
もちろん、Javaの8におけるラムダの導入により、これを行う方法は簡単です。
list.stream().anyMatch(dto -> dto.getId() == id);
「ホイールを発明する」ことを意味すると確信しています。 – Nishan
なぜリストを検索しないのですか? –
Nishan、これはまさに私が意味していた、それは翻訳の問題でした:D Ray Tayek、うわー、そのようなシンプルでエレガントなアイデアは私の心を越えていませんでした。ありがとうございます – Sergey