티스토리 뷰

JAVA/정리

HashSet, TreeSet

란텔 2014. 1. 21. 21:52

HashSet

- Set인터페이스가 구현하고 있는 대표적인 클래스

- 데이터의 저장순서를 유지하지 않고, 데이터 중복을 허용하지 않는다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
 
public class HashSetEx1 {
    public static void main(String[] args){
        
        HashSet set = new HashSet();
        
        Object[] obj = {"1",new Integer(1),5,8,2,4,10,2,"4","6","8","10"};
        
        for(int i =0; i<obj.length; i++){
            set.add(obj[i]);
        }
        
        System.out.println(set);
        //콘솔창 [2, 1, 10, 1, 4, 6, 5, 4, 8, 10, 8]
    }
}
 

위의 코드를 보면 HashSet은 순서대로 객체를 추가 한 것과는 달리 다른 순서대로 결과를 출력하였다.

이처럼 저장 순서를 유지 하지 않는다.

그리고 중복을 허용하지 않기 때문에 숫자형 변수 2가 두번 저장 되었음에도 하나만 출력하였다.

그리고 String 타입의 1과 Integer타입의 1을 다르다고 표시한다.

이처럼 중복을 허용하지 않지만 같은 타입의 중복을 허용하지 않는다는 것을 알 수 있다.

 

 

HashSet중복을 허용하지 않고, 저장 순서를 유지하지 않지만

중복허용을 하지 않으면서 저장순서를 유지하고 싶다면 LinkedHashSet을 사용하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
 
public class HashSetEx1 {
    public static void main(String[] args){
        
        Set set = new LinkedHashSet();
        
        Object[] obj = {"1",new Integer(1),5,8,2,4,10,"2","4","6","8","10"};
        
        for(int i =0; i<obj.length; i++){
            set.add(obj[i]);
        }
        
        System.out.println(set);
        //콘솔창 [1, 1, 5, 8, 2, 4, 10, 4, 6, 8, 10]
    }
}
 
위 코드의 결과를 보면 저장순서를 유지하면서 데이터를 출력하고 있다.

 

 

 

 

 

 

 

TreeSet은

- 이진검색트리(binary search)의 형태로 데이터를 저장한다.

- 검색 및 범위검색과 정렬에 좋은 자료구조이다.

- 역시 Set인터페이스를 구현한 클래스라, 데이터의 중복 허용을 하지 않고, 저장 순서도 유지하지 않는다.

 

 

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday