別のオブジェクトリストから重複リストオブジェクトの値を削除します

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のオブジェクトに削除する必要がnameLIST2のように値。
例えば、ここにリスト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つのステップで物事を作るが、それは明確かつ効率的に十分です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=185787&siteId=1