Study/java

[Java] Collection - contains, containsAll : 특정 요소 포함

 

contains와 containsAll 메소드는 컬렉션에 특정 값을 포함하고있는지 여부를 판별합니다.

 

두 메소드 모두 반환값은 boolean입니다.

add나 remove와 비슷하게 contains도 컬렉션을 인수로 받는 containsAll 메소드가 있습니다.

 

contains(Object o)

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

System.out.println("list.contains(2) = " + list.contains(2));
System.out.println("list.contains(5) = " + list.contains(5));

contains 사용 결과

위와 같이 사용합니다.

제네릭 타입을 정해준 경우에는 지정한 타입과 같은 타입의 값만 인자로 받을 수 있습니다.

만약 Integer 리스트라면 contains 메소드에는 Integer 타입만 사용할 수 있습니다.

 

제너릭 타입을 지정하지 않으면 어떤 타입이든 넣을 수 있습니다.

List list = new ArrayList();
list.add(1);
list.add("2");
list.add('3');

System.out.println("list.contains(1) = " + list.contains(1));
System.out.println("list.contains(2) = " + list.contains(2));
System.out.println("list.contains('3') = " + list.contains('3'));

제너릭을 쓰지 않은 경우

제너릭 타입을 지정하지 않으면 무엇이든 추가할 수 있지만 권장하지는 않습니다.

어떤 타입이 들어올지 모르는 상태에서 작업하는 것은 잠재적인 위험성이 크기 때문입니다.

 

 

 

 

containsAll(Collection<?> c)

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");

Set<String> set = new HashSet<>();
set.add("b");
set.add("c");

Set<String> set2 = new HashSet<>();
set2.add("e");
set2.add("f");

System.out.println("list.containsAll(set) = " + list.containsAll(set));
System.out.println("list.containsAll(set2) = " + list.containsAll(set2));

containsAll 사용 결과

인자로 주어진 컬렉션과 모두 일치해야 true를 반환합니다.

일부만 일치하면 false를 반환합니다.

 

add나 remove는 컬렉션에 변경이 일어났는지 여부에 따라 반환값이 결정됩니다.

contains는 Object의 equals 메소드를 통해 포함 여부를 판별합니다.

contains 외에 add 메소드에서도 중복을 허용하지 않는 컬렉션(ex. Set)에 요소를 추가할 때 equals를 사용합니다.