https://www.tcpschool.com/java/java_collectionFramework_concept
* 컬렉션 프레임워크 (Collection Framework)
자바에서 데이터를 효과적으로 저장하고 관리하기 위한 표준화된 구조와 인터페이스의 집합.
java.util 패키지에서 제공.
[ 주요 인터페이스 ]
1. List 인터페이스 : 순서가 있는 데이터를 저장, 중복된 원소 허용.
ArrayList, LinkedList, Vector, Stack, Queue 등
2. Set 인터페이스 : 순서가 없는 데이터를 저장, 중복된 원소 허용X
HashSet, LinkedHashSet, TreeSet 등
3. Map 인터페이스 : 키와 값의 쌍으로 데이터를 저장, 각 키는 유일해야 하며, 값은 중복될 수 없음.
HashMap, LinkedHashMap, Hashtable, TreeMap 등
* 컬렉션 클래스 (Collection Class)
컬렉션 프레임워크에 속하는 인터페이스를 구현한 클래스.
[ List 컬렉션 클래스 ]
- 요소의 저장 순서 유지. (인덱스로 접근)
- 요소의 중복 저장 가능. (null 저장 가능.)
1. ArrayList<E> * 가장 많이 사용 *
내부적으로 배열을 이용하여 요소를 저장.
List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();
* 참고 *
2. LinkedList<E>
내부적으로 연결 리스트(linked list)를 이용하여 요소를 저장.
배열과 다르게 저장된 요소가 비순차적으로 분포되며, 요소들은 링크(link)로 연결됨.
List<String> lnkList = new LinkedList<String>();
List<String> lnkList = new LinkedList<>();
- 단일 연결 리스트 (singly linked list)
각 노드는 데이터 필드, 다음 노드를 가리키는 참조(링크)로 이루어져 있음.
- 이중 연결 리스트 (doubly linked list)
각 노드는 데이터 필드, 이전 노드를 가리키는 참조, 다음 노드를 가리키는 참조(링크)로 이루어져 있음.
3. Vector<E>
ArrayList와 동일한 내부 구조.
동기화된(synchronized) 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 Vector 의 메소드들을 실행할 수 없음.
List<Integer> vec = new Vector<Integer>();
List<Integer> vec = new Vector<>();
[ Set 컬렉션 클래스 ] _ 집합
- 요소의 저장 순서 유지X.
- 요소의 중복 저장 허용X. (하나의 null만 저장.)
1. HashSet<E> * 가장 많이 사용 *
Set<String> set = new HashSet<String>();
Set<String> set = new HashSet<>();
[ Map 컬렉션 클래스 ]
- key - value 형식으로 값을 저장. (키와 값은 모두 객체)
- 요소의 저장 순서 유지X.
- key값 중복 허용X, value값 중복 허용.
1. HashMap<K, V> * 가장 많이 사용 *
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<>();
* 자바의 컬렉션들은 Iterator 인터페이스를 구현하고 있음.
iterator() 메소드를 통해 요소 출력.
'Java > 공부공부' 카테고리의 다른 글
[자바기초] JIT Compiler (0) | 2024.01.24 |
---|---|
[자바기초] 컴포넌트와 모듈 (0) | 2024.01.16 |
[자바기초] 제네릭(Generic)에 대해서 (0) | 2024.01.14 |
[자바기초] String Pool 에 대해서 (0) | 2024.01.09 |
[자바기초] 메인메소드 String[] args 에 대해서 (0) | 2024.01.08 |