-
[Java] Set 컬렉션 클래스프로그래밍/JAVA 2022. 8. 9. 22:17728x90
set 컬렉션 클래스는 순서가 없는 데이터들의 집합으로 데이터의 중복을 허용하지않는 특징을 가지고 있다.
대표적인 set 컬렉션 클래스는 HashSet, TreeSet가 있고 하나씩 알아보자.
HashSet <E> 클래스
JDK 1.2부터 제공하여 해시 알고리즘을 사용하여 검색 속도면에서 굉장한 장점을 보인다.
데이터를 중복해서 저장할 수 없으며 저장 순서가 유지되지않는다.
만일 데이터에 중복된 값을 저장하려하면 자동으로 제거한다.
중복 제거 과정
- hashcode()를 이용하여 저장되어 있는 객체들의 해시 코드 값을 비교
- equals()로 두 객체를 비교해서 true 가 나오면 동일한 객체로 판단
HashSet<타입> 참조변수 = new HashSet(); add() : 요소를 추가 size() : 요소의 개수를 반환
public static void main(String[] args) { HashSet<String> hashSet1 = new HashSet<>(); HashSet<String> hashSet2 = new HashSet<>(); hashSet1.add("김사과"); hashSet1.add("반하나"); hashSet1.add("오렌지"); System.out.println(hashSet1); // [반하나, 김사과, 오렌지] hashSet1.add("김사과"); System.out.println(hashSet1); // [반하나, 김사과, 오렌지] for (String s : hashSet1){ System.out.print(s + " "); // 반하나 김사과 오렌지 } System.out.println(""); System.out.println("요소의 개수 : " + hashSet1.size()); // 3 hashSet2.add("김사과"); hashSet2.add("반하나"); hashSet2.add("오렌지"); System.out.println(hashSet2); // [반하나, 김사과, 오렌지] // 탐색 Iterator<String> iterator = hashSet2.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next() + " "); // 반하나 김사과 오렌지 } System.out.println(""); }
TreeSet <E> 클래스
JDK 1.2부터 제공되어 이진 탐색 트리 구조로 이루어져 요소를 저장한다. 데이터를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다.
✔ 이진 탐색 트리 : 추가와 삭제에는 시간이 걸리지만 정렬, 검색에 높은 성능을 자랑라는 자료구조
public static void main(String[] args) { TreeSet<Integer> treeSet = new TreeSet<>(); treeSet.add(10); treeSet.add(8); treeSet.add(20); treeSet.add(35); treeSet.add(21); treeSet.add(4); System.out.println(treeSet); // [4, 8, 10, 20, 21, 35] treeSet.remove(20); System.out.println(treeSet); // [4, 8, 10, 21, 35] System.out.println(treeSet.size()); // 5 : 요소 개수 System.out.println(treeSet.first()); // 4 : 첫번째 데이터 System.out.println(treeSet.last()); // 35 : 마지막 데이터 System.out.println(treeSet.higher(21)); // 35 : 21 다음 데이터 System.out.println(treeSet.lower(21)); // 10 : 21 이전 데이터 for(int i : treeSet){ System.out.print(i + " "); //4 8 10 21 35 } System.out.println(); }
728x90'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 예외처리(Exception) (0) 2022.08.10 [Java] Map 컬렉션 클래스 (0) 2022.08.09 [Java] List 컬렉션 클래스 (0) 2022.08.09 [Java] 컬렉션 프레임워크(collection framework) (0) 2022.08.09 [Java] 인터페이스(interface) (0) 2022.08.08