RJ_P:
私は両方のリストに重複として名前を持つ2つのオブジェクトのリストを持っています。私はLIST2からLIST1からすべての重複値を削除する必要があります。
以下は、クラスはリスト1および除去する必要性から、重複する値をチェックするには、この変数が必要で、名前の変数を持って、シナリオです。
Class ObjectClass{
String name;
}
//これは、3つのオブジェクトを最初のリストを持っています
List<ObjectClass> list1= new ArrayList();
ObjectClass objectClassDataL1= new ObjectClass();
objectClassDataL1.setName("test");
list1.add(objectClassDataL1);
ObjectClass objectClassDataL2= new ObjectClass();
objectClassDataL2.setName("test2");
list1.add(objectClassDataL2);
ObjectClass objectClassDataL3= new ObjectClass();
objectClassDataL3.setName("test3");
list1.add(objectClassDataL3);
List<ObjectClass> list2= new ArrayList();
ObjectClass objectClassData1= new ObjectClass();
objectClassData1.setName("test");
list2.add(objectClassData1);
ObjectClass objectClassData2= new ObjectClass();
objectClassData2.setName("test3");
list2.add(objectClassData2);
私はリスト1のオブジェクトに削除する必要がname
LIST2のように値。
例えば、ここにリスト1からデータを削除した後、リスト1は、1つのオブジェクトのみのデータを含める必要があります。予想される出力:
LIST1 - > [オブジェクト( 'TEST2')]
リスト1のサイズは1です
ストリームを使用してJava 8で私を提案してください。
davidxxx:
ストリームとJAVA 8で私を提案してください、
ここでは、既存のを修正したいとストリームを使用する必要はありませんlist1
。
あなたにできることは名の追加でlist2
の要素Set
とから削除する要素list1
に含まれていないことをSet
。
Set<String> namesInList2 = list2.stream().map(ObjectClass::getName).collect(toSet());
list1.removeIf(o -> namesInList2.contains(o.getName());
これは、2つのステップで物事を作るが、それは明確かつ効率的に十分です。