반응형
Set
Set은 중복된 요소를 포함할 수 없다. List와는 다르게 인덱스를 사용하지않아서 인덱스 매개변수가 없다.
Set을 구현한 클래스목록
-
HashSet (순서가 필요없는 데이터를 hash table에 저장. Set 중에 가장 성능이 좋음)
-
Linked HashSet (저장된 데이터의 값에 따라 정렬됨. red-black tree 타입으로 값이 저장. HashSet보다 성능이 느림)
-
TreeSet (연결된 목록 타입으로 구현된 hash table에 데이터 저장. 저장된 순서에 따라 값이 정렬. 셋 중 가장 느림)
성능 차이가 나는 이유는 데이터 정렬 때문이다.
HashSet
public class TestHashSet { public static void main(String[] ar) { HashSeth1 = new HashSet (); HashSet h2 = new HashSet (); h1.add("박정환"); h1.add("김동현"); System.out.println(h1.add("김희수")); // true System.out.println(h1.add("김희수")); // false // for 문 이용한 요소 조회 for (String e : h1) { System.out.print(e + " "); // 박정환 김희수 김동현 } h2.add("박정환"); h2.add("김동현"); h2.add("김희수"); // iterator() 메서드를 이용한 요소 조회 Iterator iter = h2.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); // 박정환 김희수 김동현 } // size() 메서드를 이용한 개수 조회 System.out.println("크기 : "+ h2.size()); // 3 } }
요소의 저장 순서를 바꿔도 저장되는 순서에는 영향을 미치지 않는 것을 확인할 수 있다.
LinkedHashSet
중복된 데이터를 저장할 수 없다. 차이점은 입력된 순서대로 데이터를 관리한다.
public class TestLinkedHashSet { public static void main(String[] ar) { Seth1 = new LinkedHashSet (); Set h2 = new LinkedHashSet (); h1.add("박정환"); h1.add("김동현"); System.out.println(h1.add("김희수")); // true System.out.println(h1.add("김희수")); // false // for 문 이용한 요소 조회 for (String e : h1) { System.out.print(e + " "); // 박정환 김동현 김희수 } h2.add("박정환"); h2.add("김동현"); h2.add("김희수"); // iterator() 메서드를 이용한 요소 조회 Iterator iter = h2.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); // 박정환 김동현 김희수 } // size() 메서드를 이용한 개수 조회 System.out.println("크기 : "+ h2.size()); // 3 } }
입력한 순서대로 값이 출력되는것을 확인할 수 있다..
TreeSet
데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary search tree)의 형태로 요소를 저장한다. (기본적으로 오름차순)
public class TestTreeSet { public static void main(String[] ar) { TreeSetts = new TreeSet (); ts.add(30); ts.add(40); ts.add(20); ts.add(10); // for 을 이용한 요소 조회 for (Integer e : ts) { System.out.print(e + " "); // 10 20 30 40 } ts.remove(40); Iterator iter = ts.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); // 10 20 30 } System.out.println("크기 : " + ts.size()); // 3 // subSet() 메소드를 이용한 부분 집합의 출력 System.out.println(ts.subSet(10, 20)); System.out.println(ts.subSet(10, true, 20, true)); } }
저장된 요소들이 모두 정렬된 상태로 출력되는것을 확인할 수 있다..
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
java Collection - Queue 정리 (0) | 2020.03.10 |
---|---|
java Collection - List 정리 (0) | 2020.03.10 |
java 연산자 ==, equals(), hashCode() 정리 (0) | 2020.03.10 |
java 컬렉션 프레임워크(Collection Framework) (0) | 2020.03.10 |
java 기초 문법 정리 (0) | 2018.05.10 |