2023-01-30
1. 방법
아래의 방법은 기존 set에서 비교하고자 하는 set을 빼는 방법이다. 코드는 간단하지만 원본객체가 보존이 되지 않는 문제점이 있다.
@Test
public void SetTest1(){
Set<String> allNameSet =new HashSet<>();
allNameSet.add("a");
allNameSet.add("b");
allNameSet.add("c");
allNameSet.add("d");
allNameSet.add("e");
Set<String> NameSet =new HashSet<>();
NameSet.add("a");
NameSet.add("b");
NameSet.add("c");
allNameSet.removeAll(NameSet);
for(String name : allNameSet){
System.out.println(name);
}
}
반면에 아래코드는 조금 더 복잡하지만 원본객체의 손상 없이 stream을 활용해 제외하고자 하는 set 정보만 제외시켜 새로운 set 객체어 담을 수 있다.
@Test
public void SetTest2(){
Set<String> allNameSet =new HashSet<>();
allNameSet.add("a");
allNameSet.add("b");
allNameSet.add("c");
allNameSet.add("d");
allNameSet.add("e");
Set<String> NameSet =new HashSet<>();
NameSet.add("a");
NameSet.add("b");
NameSet.add("c");
Set<String> NewNameSet =new HashSet<>();
NewNameSet = allNameSet.stream()
.filter(name -> !NameSet.contains(name))
.collect(Collectors.toSet());
for(String name : NewNameSet){
System.out.println(name);
}
}
메인 이미지 출처 : 사진: Unsplash의redcharlie | @redcharlie1