자바는 다양한 내부 라이브러리들을 제공하고 있는데, 그 중 정말 중요한 컬렉션 프레임워크에 대해 정리해보려고 한다.
앞으로 개발을 할 때 List, Set, Map 등 다양한 자료구조를 사용하게 될 텐데, 그 만큼 각 자료구조의 장/단점을 이해하고 있어야 상황에 맞는 자료구조를 이용할 수 있을 것 같다.
우리가 처음 배열을 배우면 int[], String[] 등 정적배열을 사용했을 것이다. 정적배열이다보니 연산을 하다보면 사이즈가 부족할 경우가 생기고, 배열 중간에 값의 삽입 또는 삭제가 어려울 것이다. 그리고 배열 사이즈를 미리 크게 할당할 경우에는 메모리 낭비가 심해질 것이다. 컬렉션 프레임워크는 이러한 문제들이 이미 구현되어 있어 개발자들은 해당 메서드들만 호출하여 사용하면 되기 때문에 훨씬 편해진다.
컬렉션 프레임워크는 배열을 동적으로 변경해서 사용자가 사용하도록 만든 프레임워크이다. 자바에서는 Collection이라는 인터페이스로 제공하고 있다.
앞으로 설명할 List, Set 등의 자료구조는 모두 Collection 인터페이스를 상속받아 구현되어 있다. (Map은 구조상의 차이가 있기 때문에 별도로 정의되어 있음)
컬렉션 프레임워크 계층도
- List - 순서가 있는 자료구조 (인덱스 개념이 존재)
- ArrayList
- LinkedList
- Vector
- Set - 집합 (원소 중복 불가, 인덱스 개념이 없음)
- HashSet
- LinkedHashSet
- TreeSet
- Map - 키/값으로 이루어진 자료구조 (인덱스 대신 키를 사용, 인덱스 개념이 없음)
- HashMap
- Hashtable
- LinkedHashMap
- TreeMap
(위의 자료구조들에 대해 상세하게 글을 작성할 예정이며, 글 작성이 완료되면 각 자료구조에 바로가기가 생길 예정)
컬렉션 프레임워크의 개요와 구성을 알아봤는데, 추후에 각 인터페이스들에 대해 정리해보려고 한다.
반응형
'☕️ Java' 카테고리의 다른 글
[Java] List 인터페이스 - ArrayList 클래스 (1) | 2023.05.30 |
---|---|
[Java] String, StringBuilder, StringBuffer의 차이 (0) | 2023.04.26 |
[Java] Comparable과 Comparator (0) | 2023.04.25 |
[Java] 인터페이스는 왜 다중 상속이 가능할까? (0) | 2023.04.18 |
[Java] toString()을 Override 하는 이유 (0) | 2023.04.07 |