개발/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);
}
}
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);
}
}
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);
}
}
[REFERENCE]