Set에서 특정 값이 존재하는지 확인하는 방법을 소개합니다.
1. contains()로 특정 요소 확인
아래와 같이 Set.contains()는 인자로 전달된 객체가 Set 안에 있다면 true, 없다면 false를 리턴합니다.
import java.util.*;
public class Example {
public static void main(String[] args) {
Set<Integer> mySet = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
int item = 3;
System.out.println(mySet.contains(item));
item = 6;
System.out.println(mySet.contains(item));
}
}Output:
true
false1.1 Custom 클래스를 사용하는 Set에서 contains() 사용하기
위의 예제는 자바에서 제공하는 기본 클래스를 사용하였습니다.
만약 Custom 클래스의 객체를 갖고 있는 Set에서 contains()를 사용하려면, Custom 클래스에 equals()와 hashCode()를 구현해야합니다.
contains()안에서 객체를 찾을 때 hashCode()와 equals()로 동일한 객체인지 비교하기 때문입니다.
아래 예제는 Student 클래스의 객체를 갖고 있는 Set에서 contains()로 객체 존재 여부를 확인하는 예제입니다.
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
public class Example2 {
public static class Student {
public String name;
public int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
Student other = (Student) o;
return name.equals(other.name) && age == other.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
public static void main(String[] args) {
Set<Student> mySet = new HashSet<>();
mySet.add(new Student("John", 10));
mySet.add(new Student("Doe", 20));
Student item = new Student("John", 10);
System.out.println(mySet.contains(item));
item = new Student("Jason", 10);
System.out.println(mySet.contains(item));
}
}Output:
true
false2. Stream의 anyMatch()로 특정 요소 확인
아래와 같이 Set를 Stream으로 만들고 anyMatch()로 특정 요소가 있는지 체크할 수 있습니다.
import java.util.*;
public class Example1 {
public static void main(String[] args) {
Set<Integer> mySet = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
final int item = 3;
boolean contains = mySet.stream().anyMatch(i -> i == item);
System.out.println(mySet.contains(item));
}
}Output:
trueLoading script...
Related Posts
- Java - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedReader로 파일 읽기
- Java - BufferedWriter로 파일 쓰기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java charAt() 함수 알아보기
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기