HashSet : Set + Hash 의 개념을 가진 자료구조
Set<E> set = new HashSet<E>();
Set<String> set = new HashSet<String>();
Set<String> set = new HashSet<>(); //hashset의 E타입 파라미터를 생략하면 왼쪽 set에 지정된 타입을 따라감
System.out.println(hSet2.isEmpty()); //비어 있으면 true 비어있지 않으면 false
Set<String> hSet 3 = new HashSet<String>();
hSet3.add("가");
hSet3.add("나");
hSet3.add("다");
System.out.println(hSet3.contains("나")); // 문자 "나"가 포함되어 있으면 ture 아니면 false
System.out.println(hSet3.size()); // HashSet 크기
Iterator<String> iterator = hSet3.iterator();
while(iterator.hasnext()){
System.out.println(iterator.hasNext());
}
LinkedHashSet : HashSet + Linked 특징을 가진 자료구조
HashSet에 Linked가 달린 구현 클래스
LinkedHashSet는 출력 순서가 항상 입력 순서와 동일한 특징을 가지고 있다.
입력 순서 정보를 갖고 있지만, 중간에 데이터값을 추출하거나 특정 순서에 저장된 값을 가져오는 것은 불가능하다.
Set<String> linkedSet1 = new LinkedHashSet<>();
TreeSet : Set + 크기비교 및 정렬 검색 기능이 추가된 자료구조
TreeSet은 공통적인 Set의 기능에 크기에 따른 정렬 및 검색 기능이 추가된 컬렉션이다.
TreeSet은 데이터를 입력 순서에 상관없이 크기 순으로 출력한다.
두객체의 크기 비교가 필요하다
TreeSet 은 NavigableSet 와 SortedSet를 부모 인터페이스로 두고 있다. (정렬과 검색)
TreseSet 타입으로 선언하지 않고 Set 타입으로 선언시, 정렬과 검색 기능을 사용할 수 없다.
System.out.println(treeSet.first()); // 2
System.out.println(treeSet.last()); // 50
System.out.println(treeSet.lower(26)); // 24
System.out.println(treeSet.higher(26)); // 28
System.out.println(treeSet.floor(26)); // 24
System.out.println(treeSet.floor(26)); // 26
System.out.println(treeSet.ceiling(25)); // 26
System.out.println(treeSet.ceiling(26)); // 26
TreeSet<Integer> treeSet = new TreeSet<Integer>();
for(int i = 50; i > 0; i -= 2){
treeSet.add(i);
}
System.out.println(treeSet.toString()); //50부터 0까지 차례대로 출력
int treeSetSize = treeSet.size();
System.out.println(treeSetSize); //25
for(int i = 0; i <treeSetSize ; i++){
System.out.println(treeSet.pollFirst() + " "); //첫번째 값을 꺼내기 동작을 25번 반복
}
for(int i = 50; i > 0; i -= 2){
treeSet.add(i);
}
int treeSetSize = treeSet.size();
for(int i = 0; i <treeSetSize ; i++){
System.out.println(treeSet.pollLast() + " "); //마지막 값을 꺼내기 동작을 25번 반복
}
TreeSet에 저장되는 모든 객체는 크기 비교의 기준이 제공되어야 한다.
객체 크기 비교 제공 방법은 2가지다.