Java - Set

춤추는개발자·2022년 10월 7일
0

Java 정리

목록 보기
43/59

Set

set은 list 와 다르게 데이터를 중복으로 저장할 수 없습니다. 또 순서가 없기때문에 list와 같이 인덱싱을 통해 값을 얻을 수 없습니다.

  • set의 컬렉션을 구현하는 대표적인 클래스로는 HashSet, TreeSet, LinkedHashSet등이 있습니다.
  • set 컬렉션을 구현하는 클래스들이 공통적으로 사용하는 메서드에는 add,addAll,remove,iterator,size,clear 등이 있습니다.

set의 대표적인 클래스

HashSet

hashset은 set 컬렉션을 구현하는 대표적인 클래스 입니다. 데이터를 저장할때 데이터를 중복 저장할 수 없고 순서를 보장해주지 않습니다.
hashset을 생성하는 방법은 아래와 같습니다.

Hashset<저장할 데이터의 자료형> 객체명 = new HashSet<>();

TreeSet

treeset은 hashset과 같이 중복된 값을 저장하지 않고 값이 입력되는 순서대로 저장하지 않습니다. 하지만 hashset과 다르게 값을 오름차순으로 정렬하여 저장하는 특징이 있습니다.

LinkedHashSet

linkedhashset도 나머지 set 클래스들과 같이 중복된 값을 저장하지 않습니다. 하지만 linkedhashset은 값을 입력받는 순서대로 저장하는 특징이 있습니다.

set 메서드 알아보기.

add()

set 자료형에 값을 추가할때 add() 메서드를 사용 합니다.

HashSet<String> set = new HashSet<>();
        set.add("내가");
        set.add("지금");
        set.add("무슨말을 하고싶냐면");
        System.out.println(set);

위의 코드처럼 add() 메서드를 사용하여 값을 추가 할 수 있습니다.
set을 출력해보면 값을 추가한 순서대로 출력되지 않는걸 확인 할 수 있습니다. 그 이유는 위에서 말했듯이 hashset 은 순서를 보장해주지 않기 때문 입니다.

addAll()

값을 여러개 입력 받을때 또는 두개의 hashset 을 합칠때 사용 합니다.

HashSet<String> set_1 = new HashSet<>
        set1.add("치킨");
        System.out.println("set: " + set1);
        // [치킨] 출력
 HashSet<String> set_2 = new HashSet<>();
        set2.add("피자");
        set2.addAll(set1);
        System.out.println("set2: " + set2);
        // [치킨,피자] 출력 (순서는 달라질 수 있음)

위의 코드처럼 두개의 hashset을 합칠 수 있습니다.

remove()

set 자료형에서 값을 제거할때 remove() 메서드를 사용 합니다.

set.remove("제거하고 싶은 값")

제거하고 싶은 값을 위의 코드처럼 적어주면 set 에서 그 값이 제거 됩니다.

size()

size() 메서드는 hashset 에 저장된 값의 개수를 반환해 줍니다.

Set<String> set = new HashSet<>();
      set.add("치킨");
      System.out.println("set의 개수 : " + set.size());
      // set의 개수 : 1 출력
      fruits.add("햄버거");
      fruits.add("피자");
      System.out.println("set의 개수 : " + set.size());
      // set의 개수 : 3 출력 

위의 코드처럼 Hashset 을 생성하여 add() 메서드를 사용하여 데이터를 저장할때 size() 메서드로 몇개의 데이터가 저장되어 있는지 확인 할 수 있습니다.

clear()

clear() 메서드는 hashset에 저장된 값을 모두 제거 합니다.

HashSet<String> set = new HashSet<String>();
       set.add("치킨");
       set.add("커피");
       set.add("회");
       System.out.println("set: " + set);
       // [커피,회,치킨] 형식으로 출력 됩니다. (순서는 바뀔수 있음)
       set.clear();
       System.out.println("set: " + set);
       // [] hashset의 값이 모두 제거 된것을 확인 할 수 있습니다.

위의 코드처럼 clear() 메서드는 hashset에 저장된 모든 데이터를 제거 합니다.

iterator()

hashset 에서는 순서가 없으므로 iterator() 메서드를 사용하여 set 안에 있는 원소들을 출력 할 수 있습니다.

HashSet<String> set = new HashSet();
     set.add("치킨");
     set.add("피자");
     set.add("햄버거");
Iterator<String> it = set.iterator();
while (it.hasNext())
   System.out.println("set: " + it.next());

hasNext() : 다음 원소가 남아있는지 여부를 알아냅니다. 다음 원소가 남았다면 true를 반환합니다.
next() : 다음 원소를 가져옵니다.

0개의 댓글