LinkedHashSet / TreeSet

HH_Nebula·2022년 9월 1일
0

Collection / Generic

목록 보기
5/7

LinkedHashSet

해시 테이블에 데이터를 저장하며 HashSet 과는 다르게 저장된 순서에 따라 순서가 결정된다. 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근이 가능하다.

LinkedHashSet 예제

import java.util.Set;
import java.util.Iterator;
import java.util.LinkedHashSet;

public class TestHashSet {

	public static void main(String[] args) {

		Set<String> linkedHashSet = new LinkedHashSet<String>();

		linkedHashSet.add("Java");
		linkedHashSet.add("Oracle");
		linkedHashSet.add("Sun");
		linkedHashSet.add("Java");

		// 저장 순서가 유지된다.
		System.out.println(linkedHashSet); // [Java, Oracle, Sun]

		Iterator<String> iter = linkedHashSet.iterator();
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // true
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // false

	}

}

TreeSet

정렬 기능이 추가되었으며 동일한 객체는 여전히 중복 저장하지 않는다. 정렬된 순서대로 보관하며 정렬 방법을 지정할 수 있다. 범위 검색 작업에 효과적이며 레드블랙트리 구조를 사용한다.

HashSet 보다 느리지만 삽입과 동시에 정렬할 때 사용

TreeSet 예제

import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;

public class TestHashSet {

	public static void main(String[] args) {

		Set<String> treeSet = new TreeSet<String>();

		treeSet.add("5. 아이스크림");
		treeSet.add("3. 꽈배기");
		treeSet.add("2. 과자");
		treeSet.add("4. 요구르트");
		treeSet.add("1. 물");

		// 자동으로 정렬되어 출력된다.
		System.out.println(treeSet); // [1. 물, 2. 과자, 3. 꽈배기, 4. 요구르트, 5. 아이스크림]

		Iterator<String> iter = treeSet.iterator();
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // true
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println(iter.next());
		System.out.println("다음 값이 있는가 ? : " + iter.hasNext()); // false

	}

}
profile
공부하고 기록하고 복습하고

0개의 댓글