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
.
당신이 할 수있는 일은의 이름을 추가하고 list2
A의 요소 Set
와에서 요소를 제거 list1
에 포함되지 않은 것을 Set
:
Set<String> namesInList2 = list2.stream().map(ObjectClass::getName).collect(toSet());
list1.removeIf(o -> namesInList2.contains(o.getName());
그것은 두 단계로 일을하게하지만, 명확하고 효율적으로 충분하다.