일단 시작해보는 블로그

[Java] Set 인터페이스, HashSet vs TreeSet vs LinkedHashset 본문

개발/Java

[Java] Set 인터페이스, HashSet vs TreeSet vs LinkedHashset

사용자 Selina Park 2019. 9. 3. 14:25

Set Interface

1. 데이터 중복 No! 

  데이터를 중복해서 저장할 수 없다.

2. 저장 순서가 보장되지 않음.

   index로 관리하는 것이 아니기 때문 .

3. Iterator의 객체(반복자)를 통해 반복문을 돌릴 수 있다.

   이것도 인덱스로 관리하는 것이 아니기 때문.

 

 

대표적으로

HashSet, TreeSet, LinkedHashSet 등이 있다.

 

 

HashSet

전형적인 Set 인터페이스의 특성을 갖추고 있다.

데이터 중복x, 입력한 순서대로 저장되지 않는다.

package hash;
import java.util.HashSet;
import java.util.Set;

// HashSet은 순서가 따로 없고 중복되지 않는다. if 중복 -> false를 반환한다.


public class HashSet_Ex1 {
    public static void main(String[] args) {

        //"1"과 Integer의 1은 모양새가 같을뿐 다른 데이터형이라서 다르다.
        Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3", "4", "4", "4"};
        Set set = new HashSet();

        for(int i=0; i<objArr.length; i++){
            set.add(objArr[i]);
        }

        System.out.println(set);
    }
}

HashSet 결과

 

 

TreeSet

데이터 중복x, 저절로 오름차순으로 데이터를 정렬해준다.

package hash;
import java.util.Set;
import java.util.TreeSet;

public class TreeSet_Ex1 {
    public static void main(String[] args) {
        Set<String> treeSet = new TreeSet();

        treeSet.add("마");
        treeSet.add("라");
        treeSet.add("다");
        treeSet.add("나");
        treeSet.add("가");

        System.out.println(treeSet);
    }
}

TreeSet 결과

 

LinkedHashSet

데이터 중복x, 입력된 순서대로 데이터 관리를 해준다.

package hash;

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

public class LinkedHashSet_Ex1 {
    public static void main(String[] args) {
        Set<String> set = new LinkedHashSet<String>();
        set.add("1");
        set.add("1");
        set.add("two");
        set.add("3");
        set.add("4");
        set.add("five");

        Iterator iterator = set.iterator();

        while(iterator.hasNext()){
            if(iterator.next().equals("1")){
                iterator.remove();
            }
        }

        System.out.println(set);
    }
}

LinkedHashSet 결과

 

 

[REFERENCE]

https://blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220994601249&parentCategoryNo=&categoryNo=28&viewDate=&isShowPopularPosts=false&from=postView

0 Comments
댓글쓰기 폼