본문 바로가기
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);

		
	}
}

'Collection > HashSet' 카테고리의 다른 글

HashSet 예제  (0) 2022.07.25
HashSet(1)  (0) 2022.07.25