* 계층 구도
Collecitons<E>
Set<E>
HashSet<E>, TreeSet<E>
Set
- 자료의 중복 저장이 허용되지 않음(hashCode() 값의 중복여부!로 판단)
- 저장 순서가 유지되지 않음 -> 인덱스가 없다
HashSet vs. TreeSet
- HashSet : 매우 빠른 검색 속도를 제공(검색 속도에 특화)
+) Hashxxxx : 검색속도 향상을 위해 쓰는 자료구조
- TreeSet : 정렬에 특화
HashSet
// Collection06Main.java
package collection06;
import java.util.HashSet;
import java.util.Iterator;
public class Collection06Main {
public static void main(String[] args) {
System.out.println("HashSet 클래스");
// Integer 타입을 저장할 수 있는 HashSet 인스턴스 생성
HashSet<Integer> set = new HashSet<>();
// 데이터 저장: add()
set.add(100);
// HashSet의 크기: size()
System.out.println("Set<>의 크기:"+set.size());
// Set은 중복 저장을 허용하지 않는다.
// 데이터 검색:
// Set은 인덱스가 없기 때문에(=순서가 없기 때문에) get() 메소드를 제공하지 않습니다.
// 데이터 검색을 위해서는 Iterator를 사용해야 함
System.out.println();
Iterator<Integer> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
// 데이터 삭제
// remove(element): Set에 있는 element를 찾아서 삭제
// element 있다면 삭제 후 true를 리턴
// element 없다면 false 리턴
System.out.println("삭제 결과: "+set.remove(2));
// Set 자료형 데이터 변경을 할 수 있는 set() 메소드를 제공하지 않습니다.
// 삭제(remove) 후 추가(add)하면 변경하는 효과
// TODO : 500 -> 555 로 변경하고 싶다면?
set.remove(500);
set.add(555);
// enhanced-for 사용
System.out.println();
System.out.println("Enhanced for 사용 출력");
for(int i : set) {
System.out.println(i);
}
// forEach() 메소드 사용
System.out.println();
System.out.println("forEach() 사용 출력");
set.forEach(System.out::println);
// toString() 제공됨
System.out.println(set);
System.out.println("\n프로그램 종료");
} // end main()
} // end class
TreeSet
- 오름차순으로 저장이 됨
// Collection09Main.java
package collection09;
import java.util.Iterator;
import java.util.TreeSet;
public class Collection09Main {
public static void main(String[] args) {
System.out.println("TreeSet 클래스");
// Integer 타입을 저장할 수 있는 TreeSet 인스턴스 생성
TreeSet<Integer> tset = new TreeSet<>();
// 데이터 저장 : add()
tset.add(11);
tset.add(2);
tset.add(14);
tset.add(1);
tset.add(7);
tset.add(15);
tset.add(5);
tset.add(9);
// 데이터 검색 - Iterator 사용
// TreeSet인 경우에 iterator() 메소드 오름차순 정렬
// values are automatically stored in ascending order
System.out.println("오름차순:");
Iterator<Integer> itr = tset.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
System.out.println();
System.out.println("내림차순:");
// 내림차순 Iterator : descendingIterator() 사용
itr = tset.descendingIterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
// enhanced for
System.out.println();
System.out.println("enhanced for");
for(int i : tset) {
System.out.println(i);
}
System.out.println("\n프로그램 종료");
} // end main()
} // end class
'웹개발 > JAVA' 카테고리의 다른 글
[JAVA] Comparator<>, Comparable<> (0) | 2021.09.04 |
---|---|
[JAVA] MAP - HashMap, TreeMap (0) | 2021.09.04 |
[JAVA] Collection - List(ArrayList, LinkedList의 CRUD 동작) (0) | 2021.09.04 |
[JAVA] Inner Class (0) | 2021.09.03 |
[JAVA] String - immutable, StringBuilder and StringBuffer - mutable (0) | 2021.09.02 |