본문 바로가기

내 맘대로 알고리즘

HashSet, TreeSet, LinkedHashSet 예제 with Java




-1. 이전글


2018/12/31 - [내 맘대로 알고리즘] - Java ArrayList, Vector 예제

2019/01/01 - [내 맘대로 알고리즘] - Java Queue, Priority Queue 예제



0.

Set


Set은 데이터의 중복된 값이 없는 자료구조입니다.

따라서,

AABBBCCDD의 값이 순사적으로 입력되더라도

ABCD의 값만 남아있게 되는 자료구조입니다.


https://developer.android.com/reference/java/util/Set 


Android Developer에는


중복 요소가없는 컬렉션입니다. 

 이 인터페이스는 이름에서 알 수 있듯이 수학적 집합 추상을 모델링합니다.


라고 적혀있습니다.


1. HashSet


HashSet은 기본적인 Set의 구조를 갖고 있는 자료구조입니다.

중복된 값이 없는 자료구조이며, 별다른 특징이 없지만, 그렇기 때문에 Set중에서 가장 빠른 속도를 제공하고 있습니다.

또한 Set이 Interface로 되어 있기 때문에, Set<T> set = new HashSet<T>();  으로 자료구조를 초기화합니다.



1-1. Method


1
2
3
normalSet.add("data"); //data를 추가
normalSet.remove("data");//set에서 data라는 요소를 제거
normalSet.contains("data");//set에서 data라는 요소를 
cs

Set에서는 add, remove, contains와 같이 데이터를 추가하거나, 제거, 확인하는

매소드를 제공해주고 있습니다.


2.LinkedHashSet


LinkedHashSet은 Set을 인터페이스로 갖고 있으며, 들어오는 데이터의 순서를 보장하고 있는 자료구조입니다.

또한 Set이 Interface로 되어 있기 때문에, Set<T> set = new LinkedHashSet<T>(); 으로 객체를 생성합니다.

.


2-1. Method


1
2
3
linkedSet.add("data"); //data를 추가
linkedSet.remove("data");//set에서 data라는 요소를 제거
linkedSet.contains("data");//set에서 data라는 요소를 확인

cs


Set에서는 add, remove, contains와 같이 데이터를 추가하거나, 제거, 확인하는

매소드를 제공해주고 있습니다.


3. TreeSet:


TreeSet은 Set을 인터페이스로 갖고 있으며, 들어오는 데이터의 가중치를 보장하고 있는 자료구조입니다.

또한 Set이 Interface로 되어 있기 때문에, Set<T> set = new TreeSet<T>(); 으로 객체를 생성합니다.


3-1. Method


1
2
3
treeSet.add("data"); //data를 추가
treeSet.remove("data");//set에서 data라는 요소를 제거
treeSet.contains("data");//set에서 data라는 요소를 확인
cs

Set에서는 add, remove, contains와 같이 데이터를 추가하거나, 제거, 확인하는

매소드를 제공해주고 있습니다.


4. Example


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
 
public class ExampleTreeSet {
    public static void main(String[] args) {
        Set<String> normalSet = new HashSet<String>();
        normalSet.add("banana");
        normalSet.add("cat");
        normalSet.add("apple");
        normalSet.add("banana");
        normalSet.add("cat");
        normalSet.add("apple");
        normalSet.add("star");
        normalSet.add("host");
        print("HashSet ",normalSet);
        
        Set<String> treeSet = new TreeSet<String>();
        treeSet.add("banana");
        treeSet.add("cat");
        treeSet.add("apple");
        treeSet.add("banana");
        treeSet.add("cat");
        treeSet.add("apple");
        treeSet.add("star");
        treeSet.add("host");
        
        print("TreeSet ",treeSet);
        
        Set<String> linkedSet = new LinkedHashSet<String>();
        linkedSet.add("banana");
        linkedSet.add("cat");
        linkedSet.add("apple");
        linkedSet.add("banana");
        linkedSet.add("cat");
        linkedSet.add("apple");
        linkedSet.add("star");
        linkedSet.add("host");
        print("LinkedHashSet ",linkedSet);
        
    }
    public static void print(String dataStructure,Set<String> treeSet) {
        System.out.print(dataStructure);
        System.out.print("value: ");
        treeSet.forEach(value->{
            System.out.print(value+" ");
        });
        System.out.println(" ");
    }
}
cs


4-1. Result