자바 고급(JAVA)

JCF 주요 인터페이스

beginner-development 2026. 5. 21. 23:07

1. List<E> 컬렉션

List는 객체를 일렬로 저장하고 인덱스로 관리하는 자료구조로, 배열과 유사하지만 크기가 동적으로 변하고 다양한 편의 메서드를 제공한다. 또한 저장된 순서를 유지하며, 중복된 객체 저장도 허용한다. 대표적인 구현 클래스는 아래와 같다.

  • ArrayList
  • LinkedList
  • Vector
  • Stack

1 - 1. ArrayList

가장 널리 사용되는 List의 구현 클래스. 배열 기반 구조로, 인덱스를 통한 빠른 검색이 장점이며, 내부 배열의 크기를 초과하면 자동으로 크기를 늘려준다. 하지만 중간 삽입/삭제 시에는 배열 이동이 필요하므로 느릴 수 있다.

1 - 2. LinkedList

연결 리스트 자료구조 기반 구조로, 삽입/삭제가 빠르고 검색이 느리다. 각 요소는 이전/다음 요소의 참조 주소를 저장하고 있다. 중간 삽입/삭제가 자주 일어나는 곳에 적합하지만, ArrayListㅐ보다 검색 성능은 떨어진다.

 

그림으로 보는 두 구조 비교

(좌) ArrayList (우) LinkedList

1 - 3. 비교 요약 및 활용 팁

비교 요약)

항목 ArrayList LinkedList
데이터 구조 배열 연결 리스트
검색 속도 빠름 (인덱스 기반) 느림 (순차 탐색)
삽입/삭제 속도 느림 (복사 필요) 빠름 (참조만 변경)
중복 허용 가능 가능
용도 추천 읽기 중심, 순차 추가 삽입/삭제 중심

 

활용 팁)

상황 추천 클래스
순차적으로 데이터 추가/읽기 위주 ArrayList
중간에 데이터 삽입/삭제 많음 LinkedList
동기화 필요 (멀티스레드) Vector (구버전), Collections.synchronizedList

 

2. Set<E> 컬렉션

수학에서의 집합과 같은 개념으로, 중복을 허용하지 않는 자료구조. 저장 순서를 유지하지 않는 것이 일반적이며, 인덱스 기반 탐색은 지원하지 않는다. null 값은 1개까지만 허용된다. 대표 구현 클래스는 아래와 같다.

  • HashSet
  • LinkedHashSet
  • TreeSet

2 - 1. HashSet

가장 널리 사용되는 Set 구현체로 중복을 허용하지 않고 저장 순서도 유지되지 않는다. 내부적으로 Hash Table 구조를 사용한다.

 

2 - 1 - 1. 동작 원리

  1. 객체 저장 시 hashCode() 를 호출해 해시값을 생성한다.
  2. 동일 해시값 존재 시 equals() 로 추가 여부를 판단한다.
  3. 중복이면 무시하고, 새 객체이면 저장한다.

HashSet 구조

 

3. Map<K, V>

key - value 쌍으로 데이터를 저장하는 자료구조. 하나의 키에 하나의 값이 매핑되며, Key는 중복을 허용하지 않지만 Value는 중복이 가능하다. Key를 기반으로 데이터를 저장하고 검색하기에 검색 속도가 빠르며, 대표적인 구현체는 아래와 같다.

  • HashMap
  • Hashtable
  • TreeMap
  • LinkedHashMap
  • SortedMap

3 - 1. HashMap

Map 인터페이스의 가장 대표적인 구현체로, Hashing 기법을 통해 Key를 빠르게 검색한다. HashMap은 저장 순서를 유지하지 않는다.

HashMap 구조

3 - 1 - 1. Entry 객체란?

Map 내부에 저장되는 한쌍의 데이터 (Key와 Value).

Map.Entry<K, V> 인터페이스로 표현한다.

리턴 타입 메서드 설명
K getKey() Entry의 Key 반환
V getValue() Entry의 Value 반환
V setValue(V value) Entry의 Value 수정
boolean equals(Object o) 두 Entry 동일 여부 비교
int hashCode() Entry의 해시코드 반환

3 - 2. Map 활용 패턴

목적 방법
전체 Key 얻기 map.keySet()
전체 Value 얻기 map.values()
전체 Entry 얻기 map.entrySet()
순회 for-each, Iterator, Stream

'자바 고급(JAVA)' 카테고리의 다른 글

자료구조, 알고리즘과 Big O  (0) 2026.05.28
Big O에 대한 이해  (0) 2026.05.28
JCF의 필요성과 구조 이해  (0) 2026.05.20
익명 클래스(Anonymous Class)  (0) 2026.05.18
내부 클래스(Inner Class)  (0) 2026.05.15