Set

2018. 6. 29. 22:47

Set


List컬렉션과는 다르게 일반적으로 저장 순서가 유지되지 않음(LinkedHashSet 예외). 객체를 중복 저장 불가하고 하나의 null만 저장 가능. 수학의 집합과 같은 개념이다. Iterator를 이용하여 객체를 가져온다.



Set 메소드




1. HashSet

- List 인터페이스의 구현 클래스. 해쉬 테이블에 원소를 저장하기 때문에 성능면에서 가장 우수하다원소들의 순서가 일정하지 않다.


public static void main(String[] args) {

Set<String> set = new HashSet<>();

set.add("홍길동");
set.add("김영수");
set.add("조하아");

Iterator<String> iterator = set.iterator();

// while 루핑
while (iterator.hasNext()) {

String str = iterator.next();

if (str.equals("홍길동")) {
iterator.remove();
}

// set에서 삭제됨으로 str로 출력시 홍길동 있음.
System.out.print(str +"\t");

// 홍길동 없음.
System.out.println(set);
}

System.out.println();

// foreach 루핑
for (String string : set) {
System.out.println(string);
}

}

출력 결과





2. TreeSet

레드-블랙 트리(red-black tree)에 원소를 저장하므로 값에 따라서 순서가 결정되며 속도가 HashSet보다 느리다.


public static void main(String[] args) {

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

treeSet.add("");
treeSet.add("");
treeSet.add("");
treeSet.add("");
treeSet.add("");
treeSet.add("");

System.out.println(treeSet);
}


출력 결과


[가,나,다,라,마]  --sort가 자동으로 됨.


3. LinkedHashSet

해쉬 테이블과 연결 리스트의 결합된 형태로 원소들의 순서는 삽입되었던 순서와 같다HashSet의 문제점인 순서의 불명확성을 제거한 방법이다.

 


public static void main(String[] args) {

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

set.add("");
set.add("");
set.add("");
set.add("");
set.add("");
set.add("");

System.out.println(set);
}

출력 결과


[가, 라, 다, 나, 마] -- 입력한 순서대로 출력



출처: 이것이 자바다

'Get IT Note > 자료구조' 카테고리의 다른 글

List  (0) 2018.06.29
Collection Framework  (0) 2018.06.22

BELATED ARTICLES

more