[Java] 컬렉션 프레임워크 (Collection Framework) 핵심 개념

bagt13·2022년 5월 17일
0

JAVA

목록 보기
4/7
post-thumbnail

📘 ArrayList

크기가 고정된 배열과 달리,
ArrayList 는 저장 용량을 초과한 객체들이 들어오면 자동으로 저장용량이 늘어나게 된다.


📒 ArrayList와 LinkedList

검색작업은 ArrayList가 더 빠르지만, ArrayList의 경우 요소 추가/삭제 시 요소 뒤의 인덱스들이 모두 이동하기 때문에, 빈번한 객체 삭제와 삽입이 일어날 수 있는 상황에서는 ArrayList보다는 LinkedList를 사용하는 것이 좋다.

따라서 데이터의 잦은 변경이 예상된다면 LinkedList를, 데이터의 개수가 변하지 않는다면 ArrayList를 사용하는 것이 좋다.



📘 Set

Set 인터페이스를 구현한 대표적인 클래스로는 HashSet, TreeSet이 있다.


📒 TreeSet

TreeSet이진 탐색 트리 형태로 데이터를 저장한다.

이진 탐색 트리는 하나의 부모 노드가 최대 두 개의 자식 노드와 연결되는 이진 트리(Binary Tree)의 일종으로, 정렬과 검색에 특화된 자료 구조이고, 기본 정렬은 오름차순이다.



📘 Comparator와 Comparable

ComparatorComparable은 컬렉션을 정렬하기 위해 자바에서 제공하는 인터페이스이다.

  • Comparable : 비교 대상(매개 변수)과 자기 자신을 비교하며, compareTo() 메서드를 사용해 객체를 정렬한다.

    CompareTo()는 두 객체가 같으면 0, 비교할 객체가 주어진 객체보다 작으면 음수, 크면 양수를 반환한다.


  • Comparator : 매개 변수인 두 객체를 비교한다.

    Comparator 인터페이스는 주로 기본 정렬 기준이 아닌 다른 기준으로 정렬하고 싶을 때 사용하며, 이때는 compare() 메소드를 오버라이딩한다.



📘 Map

Map 인터페이스를 구현한 클래스에는 HashMap, Hashtable, TreeMap, SortedMap 등이 있다.


📒 HashMap

HashMap해시 함수를 통해 '키'와 '값'이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 위치 또한 관계가 없다.


  • HashMap의 로 사용할 객체는 hashCode()와 equals() 메서드를 재정의해서 동등 객체가 될 조건을 정해야 하는데, 동등 객체, 즉 동일한 키가 될 조건은 HashSet과 동일하다.

hashCode()의 리턴값이 같아야 하고, equals() 메서드가 true를 리턴해야 한다.

주로 키 타입은 String을 많이 사용하는데, String은 hashcode()와 equals() 메서드가 재정의 되어 있다.


  • HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다.

  • 키와 값의 타입은 기본 타입(byte, short, int, float, double, boolean, char)을 사용할 수 없고 클래스 및 인터페이스 타입만 가능하다.

  • 또한, HashMap은 키(key)와 값(value)에 null 값을 허용하지만, Hashtablenull 값을 허용하지 않는다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글