자바의 HashSet은 Set 인터페이스를 구현한 클래스이다.
HashSet은 중복된 값을 허용하지 않으며 List 등과는 다르게 입력한 순서가 보장되지 않는다.
HashSet의 특징을 정리하면 다음과 같다.
중복된 값을 허용하지 않는 특징이 있기 때문에 값의 존재 유무를 파악할 때 사용할 수 있다.
HashSet의 내부 코드를 보면 HashMap을 사용해서 구현이 되어 있는 것을 볼 수 있다.
HashSet<Integer> set1 = new HashSet<Integer>(); // HashSet 생성
HashSet<Integer> set2 = new HashSet<>(); // new에서 타입 파라미터 생략 가능
HashSet<Integer> set3 = new HashSet<Integer>(set1); // set1의 모든 값을 가진 HashSet 생성
HashSet<Integer> set4 = new HashSet<Integer>(10); // 초기 용량 지정
HashSet<Integer> set6 = new HashSet<Integer>(Arrays.asList(1,2,3)); //초기값 지정
HashSet<Integer> set = new HashSet<Integer>();//HashSet생성
set.add(1); //값 추가
set.remove(1); // 값 1 제거
set.clear(); // 모든 값 제거
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set.size());//set 크기 : 3
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
System.out.println(map.isEmpty());// false
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set.contains(1)); //set내부에 값 1이 있는지 check : true
Set 컬렉션을 그냥 출력하게 되면 대괄호로 묶어서 set의 전체값이 출력된다.
Set에는 인덱스로 객체를 가져오는 get(index)메소드가 없다.
대신 전체 객체를 대상으로 한번씩 반복해서 가져오는 반복자 Iterator를 제공한다.
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set); //전체출력 [1,2,3]
Iterator iter = set.iterator(); // Iterator 사용
while(iter.hasNext()) {//값이 있으면 true 없으면 false
System.out.println(iter.next());
}
HashSet -> List, List -> HashSet
List<String> list = new ArrayList<>();
Set<String> set = new HashSet<>(list); // list->set
List<String> list = new ArrayList<>(set);// set->list