hayu's 개발 일지

[TIL]240406 Set 본문

기술/java

[TIL]240406 Set

hayu00 2024. 4. 6. 21:59

Set 이란?

  • java에서 집합은 중복 요소를 허용하지 않는 Collection이다. set 인터페이스는 HashSet, TreeSet, LinkedHashSet을 포함한 자바의 여러 클래스에 의해 구현된다.

Set 특징

  • 중복 요소를 허용하지 않는다.
  • 순서가 없다.
  • Set 은 해시 테이블 또는 트리 구조를 사용하여 요소를 저장하기 때문에 빠른 엑세스 시간을 제공한다.
  • 인덱싱을 제공하지 않는다. 즉, 배열처럼 set[1], set[2] 가 존재하지 않는다.
  • Set 은 객체만 저장하고 primitive type은 저장하지 않는다. wrapper 클래스를 사용해야 한다. 즉, byte, short, int, long,double, boolean은 set에서 사용할 수 없다.

Set 구현 클래스

HashSet : Set을 구현하는 대표 클래스이다. 데이터를 중복할 수 없고 순서를 보장하지 않는다.

TreeSet : HashSet 특성 + 오름차순으로 데이터를 정렬한다.

LinkedHashSet : 데이터를 중복해서 저장할 수 없고, 다른 Set과 다르게 입력한 순서대로 데이터를 저장한다.

Set 메서드

  • add(Object o) : 주어진 객체를 추가하고 성공하면 true, 중복 객체면 false를 반환한다. (boolean 타입 반환)
  • contains(Object o) : 주어진 객체가 Set에 존재하는지 확인한다. (boolean 타입 반환)
  • inEmpty() : Set이 비어있는지 확인한다. (boolean 타입 반환)
  • iterator() : 저장된 객체를 하나씩 읽어오는 반복자를 반환한다. Iterator 타입을 반환한다.
  • size() : 저장되어 있는 전체 객체의 수를 반환한다. int 타입을 반환한다.
  • clear() : Set에 저장되어 있는 모든 객체를 삭제한다.
  • remove(Object o) : 주어진 객체를 삭제한다. (boolean 타입 반환)

HashSet

  • Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스이다. Set 인터페이스의 특성을 그대로 물려받으므로 중복된 값을 허용하지 않으며, 저장 순서를 유지하지 않는다.
        /*HashSet 생성*/
        HashSet<String> hashSet = new HashSet<>();

        /*HashSet 에 객체 추가*/
        hashSet.add("java");
        hashSet.add("python");
        hashSet.add("c++");
        hashSet.add("ruby");
        hashSet.add("java"); /*위에 코드 반복*/

        hashSet.remove("python"); /*데이터 삭제*/

        /*반복자를 생성해서 할당*/
        Iterator a = hashSet.iterator();

        while (a.hasNext()) {
            System.out.println(a.next());
        }
        
        // c++
        // java
        // ruby
	     // java를 두번 추가했지만 한번만 저장됨

 

참고 자료

- https://pongic.tistory.com/4

- https://godsu94.tistory.com/173

- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=heartflow89&logNo=220994601249

- https://kim-oriental.tistory.com/38#google_vignette

- https://zerotoinfinite.tistory.com/4

'기술 > java' 카테고리의 다른 글

[TIL]240410 JAVA Collection  (0) 2024.04.10
[TIL]240408 Scanner 클래스  (1) 2024.04.08
[TIL]240403 Map  (0) 2024.04.03
[TIL]240325 ArrayList  (0) 2024.03.25
[TIL]240323 List  (1) 2024.03.23