Collection
동일 타입의 원소들을 묶어 동적으로 관리하는 자료구조
컬렉션에서 원소는 객체만 저장 가능
** java.util 패키지에 Collection 존재
List
순서 유지 (연속적/순차적 저장)
중복 저장 가능
list(파이썬)
[List 구현체]
ArrayList, Vector, LinkedList
ArrayList
배열을 이용하여 List의 특징을 구현한 자료구조
배열과 같이 인덱스로 원소 관리
사용자 정의 객체에 대한 contains(), remove()를 위해 equals() 재정의 필요
비동기화 메서드로 구성, 싱글 쓰레드 환경에 효율적
-> 여러 쓰레드가 ArrayList에 동시에 요소를 추가하거나 삭제하면 데이터 불일치 문제 발생
Vector
ArrayList와 유사 ( Vector 구버전 )
동기화 메서드들로 구성, 멀티 쓰레드 환경에 적합
LinkedList
ArrayList, Vector는 연속적인 객체 저장 , LinkedList는 불연속적으로 노드를 서로 연결하는 자료구조
빈번한 객체 추가/삭제 수행 시 효율적, 그러나 검색은 비효율적
사용자 정의 객체에 대한 contains(), remove()를 위해 equals() 재정의 필요
비동기화 메서드로 구성, 싱글 쓰레드 환경에서 효율적
Set
순서없음(인덱스 정보 없음)
중복저장 불가
set(파이썬)
[Set 구현체]
HashSet, TreeSet
HashSet
HashMap을 이용하여 Set의 특징을 구현한 자료구조
입력 순서와 관계 없이 출력
사용자 정의 객체 동등 비교 위해 HashCode() 및 equals() 재정의 필요
TreeSet
Set의 기본 기능에 정렬 및 검색 기능 추가 → Set이 아닌 TreeSet으로 선언 필요
균형 이진 검색 트리 (binary search tree) 형태로 여러 노드가 서로 연결된 컬렉션
입력 순서와 관계 없이 크기 순으로 출력
사용자 정의 객체 크기 비교 위해 Comparable/Comparator 인터페이스 구현 필요
Map
키와 데이터로 구성된 엔트리 객체 저장
순서 없음
키는 중복 저장 불가
데이터는 중복 저장 가능
데이터 검색에 효율적
dictionary(파이썬)
[Map 구현체]
HashMap, HashTable, TreeMap
HashMap
배열과 해쉬 함수를 이용하여 Map의 특징을 구현한 자료구조
사용자 정의 객체 동등 비교를 위해 hashCode() 및 equals() 재정의 필요
비동기화 메서드로 구성 , 싱글 쓰레드 환경에 효율적
HashTable
HashMap과 유사( HashTable 구버전 )
동기화 메서드들로 구성, 멀티 쓰레드 환경에 적합
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 |