다른 개체 목록에서 중복 목록 개체 값을 제거

RJ_P :

난 둘 다 목록에 중복으로 이름이 두 개체 목록을 가지고있다. 나는리스트 2에서 목록 1에서 모든 중복 값을 제거해야합니다.

다음은 클래스 목록 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리스트 2에서와 같은 값.
여기리스트 1로부터의 데이터를 제거한 후, 예를 들어,리스트 1은 하나의 오브젝트 데이터를 포함한다. 예상 출력 :

목록 1 -> [오브젝트 ( 'TEST2')]

List1이 크기는 1이고

스트림 자바 8에서 저를 제안하십시오.

davidxxx :

스트림과 JAVA 8에서 저를 제안하십시오,

여기에 당신은 당신이 기존의를 수정할로 스트림을 사용하지 않습니다 list1.
당신이 할 수있는 일은의 이름을 추가하고 list2A의 요소 Set와에서 요소를 제거 list1에 포함되지 않은 것을 Set:

Set<String> namesInList2 = list2.stream().map(ObjectClass::getName).collect(toSet());
list1.removeIf(o -> namesInList2.contains(o.getName());

그것은 두 단계로 일을하게하지만, 명확하고 효율적으로 충분하다.

추천

출처http://43.154.161.224:23101/article/api/json?id=185785&siteId=1