Collection/HashSet
HashSet(2)
by pms93
2022. 7. 25.
package hashSets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class HashSet2 {
public static void main(String[] args) {
// Iterator
// - iterate의 사전적 의미 : 반복하다, iterator - 반복자
// - 배열이나 이와 유사한 자료구조의 내부 요소를 순회(traversing)하기위한 용도로 사용된다
HashSet<String> hs = new HashSet<>();
hs.add("1. 대부");
hs.add("2. 반지의 제왕");
hs.add("3. 겨울왕국");
hs.add("4. 다크 나이트");
hs.add("5. 해리포터");
hs.add("6. 공공의 적");
Iterator<String> it = hs.iterator(); // it에 hs의 참조값을 담고있다.
while (it.hasNext()) { // .hasnext() - '데이터 존재시까지'의 의미
String data = it.next(); // .next() - 현재 위치의 데이터를 가져온다.
System.out.println(data);
}
// 동일 method에서 동일 이름으로 iterator.hasNext() 여러번 사용 시
// 최초 한번은 정상 작동하나 두번째부터는 false를 바로 반환한다.
// 반복자를 초기화 해주기 위해선 it = hs.iterator(); 작업을 거쳐야 한다.
it = hs.iterator();
Scanner sc = new Scanner(System.in);
String del = "";
System.out.print("삭제할 책 입력 : ");
del = sc.nextLine();
while (it.hasNext()) {
if (del.equals(it.next())) {
it.remove();
System.out.println("삭제 완료");
break;
}
}
System.out.println(hs);
// HashSet을 ArrayList에 옮겨담아 보관이 가능하다.
ArrayList<String> hsList = new ArrayList<>(hs);
System.out.println(hsList);
// ArrayList.sort()
// - 리스트를 오름차순으로 배열해준다.
hsList.sort(null);
System.out.println("오름차순 배열 후 hsList : " + hsList);
// Collections를 통한 재배열
// - 속도면에서 list.sort보다 낫다.
Collections.sort(hsList); // 오름차순 배열
System.out.println("Collections를 통한 오름차순 배열 : " + hsList);
Collections.reverse(hsList); // 현재 배열의 저장순서를 뒤집어준다.
System.out.println("Collections를 통한 내림차순 배열 : " + hsList);
}
}