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 |