JAVA

JAVA Collection Framework 1

woohap 2024. 11. 24. 13:17

Collection

Collection Framework 계층구조

동일 타입의 원소들을 묶어 동적으로 관리하는 자료구조 
컬렉션에서 원소는 객체만 저장 가능 

** java.util 패키지에 Collection 존재 

List

순서 유지 (연속적/순차적 저장)
중복 저장 가능 
list(파이썬)
[List 구현체]
ArrayList, Vector, LinkedList

ArrayList

ArrayList 예시

배열을 이용하여 List의 특징을 구현한 자료구조 
배열과 같이 인덱스로 원소 관리
사용자 정의 객체에 대한 contains(), remove()를 위해 equals() 재정의 필요 
비동기화 메서드로 구성, 싱글 쓰레드 환경에 효율적 
-> 여러 쓰레드가 ArrayList에 동시에 요소를 추가하거나 삭제하면 데이터 불일치 문제 발생 

Vector

ArrayList와 유사 ( Vector 구버전 )
동기화 메서드들로 구성, 멀티 쓰레드 환경에 적합

LinkedList

LinkedList 예시

ArrayList, Vector는 연속적인 객체 저장 , LinkedList는 불연속적으로 노드를 서로 연결하는 자료구조 
빈번한 객체 추가/삭제 수행 시 효율적, 그러나 검색은 비효율적
사용자 정의 객체에 대한 contains(), remove()를 위해 equals() 재정의 필요
비동기화 메서드로 구성, 싱글 쓰레드 환경에서 효율적 

Set

순서없음(인덱스 정보 없음) 
중복저장 불가 
set(파이썬)
[Set 구현체]
HashSet, TreeSet

HashSet

HashSet 예시

HashMap을 이용하여 Set의 특징을 구현한 자료구조 
입력 순서와 관계 없이 출력
사용자 정의 객체 동등 비교 위해 HashCode() 및 equals() 재정의 필요

TreeSet

TreeSet 예시

Set의 기본 기능에 정렬 및 검색 기능 추가 → Set이 아닌 TreeSet으로 선언 필요
균형 이진 검색 트리 (binary search tree) 형태로 여러 노드가 서로 연결된 컬렉션
입력 순서와 관계 없이 크기 순으로 출력 
사용자 정의 객체 크기 비교 위해 Comparable/Comparator 인터페이스 구현 필요

Map

키와 데이터로 구성된 엔트리 객체 저장
순서 없음 
키는 중복 저장 불가
데이터는 중복 저장 가능
데이터 검색에 효율적
dictionary(파이썬) 
[Map 구현체]
HashMap, HashTable, TreeMap

HashMap

HashMap 예시

배열과 해쉬 함수를 이용하여 Map의 특징을 구현한 자료구조 
사용자 정의 객체 동등 비교를 위해 hashCode() 및 equals() 재정의 필요
비동기화 메서드로 구성 , 싱글 쓰레드 환경에 효율적 

HashTable

HashMap과 유사( HashTable 구버전 )
동기화 메서드들로 구성, 멀티 쓰레드 환경에 적합

TreeMap

TreeMap 예시

Map의 기본 기능에 정렬 및 검색 기능 추가 
균형 이진 탐색 트리를 이용하여 Map의 특징을 구현한 자료구조 
입력 순서와 관계 없이 크기 순으로 출력
사용자 정의 객체 크기 비교 위해 Comparable/Comparator 인터페이스 구현 필요

 

** 모듈러 연산이란

주어진 숫자를 특정 값으로 나눈 후 나머지를 구하는 연산 

'JAVA' 카테고리의 다른 글

Object 클래스의 메서드  (0) 2024.12.04
객체지향 프로그래밍 1  (0) 2024.11.27
JAVA Collection Framework 3  (0) 2024.11.26
JAVA Collection Framework 2  (0) 2024.11.25