私は「カメラのフラッシュ障害のある」と「破損したカメラハウジング」でそれをリストに変換したい表示の重複は一度Javaオブジェクトリスト内の属性値を
以下のようにJavaオブジェクトのリストを持っています以下のように、最初のオブジェクトに対して1回だけ実行します。
ここで言及した溶液を用いて行うことができるものはありますか? Remove duplicates from a list of objects based on property in Java 8
私は「カメラのフラッシュ障害のある」と「破損したカメラハウジング」でそれをリストに変換したい表示の重複は一度Javaオブジェクトリスト内の属性値を
以下のようにJavaオブジェクトのリストを持っています以下のように、最初のオブジェクトに対して1回だけ実行します。
ここで言及した溶液を用いて行うことができるものはありますか? Remove duplicates from a list of objects based on property in Java 8
Employee
の例では、いくつかの重複IDがあります。
あなたは重複を許可しないHashSet
、にそれらを追加
List<Employee> employee
としてリストを持っているとしましょう。
HashSet<Object> seen=new HashSet<>();
employee.removeIf(e->!seen.add(e.getID()));
FallAndLearn 1890●1●3●15 \t \t をグループ化されます私が投稿しました。それらのオブジェクトが重複していることを意味するものではなく、異なる値を持つ可能性があるより多くの属性を持っています – Nevin
値がセット内にすでにある場合は、(セットは重複を許可しない)Set
にfalseを返すadd
方法をすべてのプロパティを追加することができますので、あなたがプロパティを空に設定することができます目的:
Set<String> values = new HashSet<>();
for (MyObject obj : myList) {
if (!values.add(obj.getValue())) {
obj.setValue("");
}
}
別の代替は、各グループの最初の要素をスキップし、グループ内の他のすべてのオブジェクトのために空に属性値を設定し、グループに同じ属性値を持つすべてのオブジェクトである:
myList.stream()
.collect(Collectors.groupingBy(MyObject::getValue))
.forEach((k, v) -> v.stream().skip(1).forEach(o->o.setValue("")));
David、2番目の解決策は私に望ましい方法で最初の列のリストを取得していますが、データベースをフェッチしなくても、そのリストを使用しようとすると、テーブルまたはビューが存在しません。フェッチ後にリストを処理しています。 – Nevin
ユニークな値を持つコレクションは、あなたがセットを探していることを示唆しています: 'new HashSet <>(リスト)' – nbrooks
なぜ最初の属性をクリアしたいですか?それはあなたを悩ませますか?どの問題がその背後にある?それは[XY問題](http://xyproblem.info/)の良い候補のように見えます。 – Spotted
あなたは実際に、1つのリスト内の位置に応じてそのようにオブジェクトを修正することをお勧めしますか?これらのオブジェクトが別のリストにも異なる順序で含まれている場合はどうなりますか?最初のオブジェクトをリストから削除するとどうなりますか? – Holger