-
Java - ArrayList.retainAll() 사용법 및 예제 (리스트 교집합 구하기)Java 2022. 7. 6. 18:18반응형
ArrayList의 retainAll(Collection)
해당 리스트에서 Collection 객체가 가지고 있는 요소를 제외한 나머지를 삭제합니다.
교집합을 구한다고 생각하면 됩니다.
공통된 부분만 남기고 전부 제거함
아래의 코드는 listA와 listB의 공통 요소(교집합)만 남기고 나머지는 listA에서 제거합니다.
listA.retainAll(listB)
1. ArrayList.retainAll() 예제
import java.util.ArrayList; class ArrayListExample { public static void main(String[] args) { ArrayList<String> list1 = new ArrayList<>(); list1.add("AA"); list1.add("BB"); list1.add("CC"); list1.add("DD"); ArrayList<String> list2 = new ArrayList<>(); list2.add("AA"); list2.add("BB"); list2.add("EE"); list1.retainAll(list2); System.out.println("list1: " + list1); System.out.println("list2: " + list2); } }
list1.retainAll(list2)를 한 결과
list1에는 list1과 list2의 공통 요소인 AA, BB만 남았습니다.
list2는 원본 데이터를 유지합니다.
결과
list1: [AA, BB] list2: [AA, BB, EE]
2. Exception handling
import java.util.ArrayList; class ArrayListExample { public static void main(String[] args) { ArrayList<String> list1 = new ArrayList<>(); list1.add("AA"); list1.add("BB"); list1.add("CC"); list1.add("DD"); ArrayList<String> list2 = null; list1.retainAll(list2); System.out.println("list1: " + list1); System.out.println("list2: " + list2); } }
list2가 null인 경우에는 exception이 발생하므로 retainAll 호출 시 exception 처리가 필요합니다.
결과
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:221)
at java.base/java.util.ArrayList.batchRemove(ArrayList.java:848)
at java.base/java.util.ArrayList.retainAll(ArrayList.java:843)
at ArrayListExample.main(ArrayListExample.java:15)3. 중복 요소 처리
import java.util.ArrayList; class ArrayListExample { public static void main(String[] args) { ArrayList<String> list1 = new ArrayList<>(); list1.add("AA"); list1.add("AA"); list1.add("CC"); list1.add("DD"); ArrayList<String> list2 = new ArrayList<>(); list2.add("AA"); list2.add("BB"); list2.add("EE"); list1.retainAll(list2); System.out.println("list1: " + list1); System.out.println("list2: " + list2); } }
list1에 중복 요소가 있을 경우에는 중복 제거가 되지 않습니다.
결과
list1: [AA, AA] list2: [AA, BB, EE]
같이보면 좋은 글
Java - ArrayList.addAll() 사용법 및 예제
반응형'Java' 카테고리의 다른 글
Java - base64 인코딩, 디코딩하기 (0) 2022.07.14 Java - ArrayList.removeAll() 사용법 및 예제 (0) 2022.07.07 Java - ArrayList.addAll() 사용법 및 예제 (0) 2022.07.05 Java - 1개의 element로 list 생성하기 (0) 2022.06.21 Java - CSV 파일 읽기 (0) 2022.06.21