[Java] Collection 정리_2

Harry park·2022년 12월 5일
0

Java

목록 보기
7/8
post-thumbnail

📌 컬랙션 프레임워크 주요 인터페이스

Set 인터페이스

Set은 순서에 상관없이, 어떤 데이터가 존재하는지를 확인하기 위한 용도로 많이 사용된다. 다시 말해서, 중복되는 것을 방지하고 원하는 값이 포함되어 있는지를 확인하는 것이 주 용도다.

Set 인터페이스의 대표 구현 클래스

HashSet, TreeSet, LinkedHashSet이 대표적인 구현 클래스다.

  • HashSet : 순서가 전혀 필요 없는 데이터를 Hash Table에 저장한다. Set중에 성능이 가장 좋다.
  • TreeSet : 저장된 데이터의 값에 따라서 정렬되는 Set이다. red-black이라는 Tree타입으로 값이 저장되며, HashSet보다 약간 성능이 느리다.
  • LinkedHashSet : 연결된 목록 타입으로 구현된 Hash Table에 데이터를 저장한다. 저장된 순서에 따라서 값이 정렬된다. 성능이 3개 중에 가장 나쁘다.

✍ HashSet vs HashTable
red-black-tree 란 ?
각 노드의 색을 붉은 색 혹은 검은색으로 구분하여 데이터를 빠르고, 쉽게 찾을 수 있는 구조의 이진(binary) 트리를 말한다.

📖 Stack 상속 관계
java.lang.Object
  ↳ java.util.AbstractCollecion
     ↳ java.util.AbstractSet
        ↳ java.util.HashSet

Set은 무엇보다도 데이터가 중복되는 것을 허용하지 않으므로, 데이터가 같은지를 확인하는 작업이 핵심이다.

인터페이스용도
Serializble원격으로 객체를 전송하거나, 파일에 저장할 수 있음을 지정
CloneableObject 클래스의 clone() 메소드가 제대로 수행될 수 있음을 지정
즉, 복제가 가능한 객체임을 의미한다.
Iterable<E>객체가 "foreach" 문장을 사용할 수 있음을 지정
Collection<E>여러 개의 객체를 하나의 객체에 담아 처리할 때의 메소드 지정
Set<E>Set 데이터를 처리하는 것과 관련된 메소드 지정

ListSet의 차이
Set은 순서가 없다. 따라서 매개 변수로 넘어가는 메소드나, 수행 결과가 데이터의 위치와 관련된 메소드는 Set 인터페이스에서는 존재하지 않는다. (get(int index), indexOf(Object o)가 없다.

로드팩터(load factor) : (데이터의 개수/저장 공간)을 의미한다. 로드팩터라는 값이 클수록 공간은 넉넉해지지만, 데이터를 찾는 시간이 증가한다.

초기 공간 크기와 로드 팩터의 크기를 고려하여 초기화 하는 것이 중요하다.
📖초기 크기가 (데이터의 개수/저장공간) 보다 클 경우에는 데이터를 쉽게 찾기 위해 재정리 작업이 필요하지 않으므로 성능에 큰 영향을 미치기 때문이다.

📖 주요 메소드

return typemethod & argsdescription
booleanadd(E e)데이터를 추가한다.
voidclear()모든 데이터를 삭제한다.
Obejctclone()HashSet객체를 복제한다. 하지만 담겨 있는 데이터는 복제하지 않는다.
booleancontains(Obejct o)지정한 객체가 존재하는지를 확인한다.
booleanisEmpty()데이터가 있는지 확인한다.
Iteratoriterator()데이터를 꺼내기 위한 Iterator 객체를 리턴한다.
booleanremove(Object o)매개 변수로 넘어온 객체를 삭제한다.
intsize()데이터의 개수를 리턴한다.

개인적으로 공부하며 기록한 내용으로, 틀린 내용이 있는 경우 덧글을 달아주시면 감사하겠습니다. 😍

profile
Jr. Backend Engineer

0개의 댓글