Java에서 사용할 수 있는 다양한 자료구조는 Java Collections Framework(JCF)를 통해 제공된다.
쉽게 정리해 보겠다.
자바 콜렉션 프레임워크에는 인터페이스랑 클래스가 있는데
인터페이스에는 리스트, 셋, 큐, 맵이 있고(콜렉션도 있는데 이건 다르 콜렉션 인터페이스의 루트 인터페이스라 자료구조라 할 수 없다.)
이것들을 바탕으로 클래스가 구현된다.
물론, 해당 인터페이스를 우리가 구현할 수도 있다.
List: 순서가 있고 중복이 허용된다.
Set: 중복이 허용 안 된다.
Queue: 요소를 처리하기 전에 보관하는 곳. 일반적으로 요소들이 처리되는 순서를 관리한다.
Map: 키-값 쌍을 저장하는 구조다. 키는 중복될 수 없고 값 하나를 매핑한다.
=>
인터페이스는 메서드 시그니처만 정의한다.
그 시그니처를 구현한 게 자바 콜렉션 프레임워크 내의 클래스다.
List 인터페이스를 구현한 것 -> ArrayList, LinkedList.
Set 인터페이스를 구현한 것 -> HastSet, TreeSet.
Queue 인터페이스를 구현한 것 -> LinkedList, PriorityQueue.
Map 인터페이스를 구현한 것 -> HashMap, TreeMap, LinkedHashMap 등.
=>
콜렉션 프레임워크에는 공통 알고리즘도 제공된다.
정렬(sort), 순환(shuffle), 변환(reverse) 등이 가능한데 위에 한 번 언급된 Collections 클래스에서 정적 메서드로 제공한다.
=>
그런데 혹시 궁금증 들지 않나?
자료구조하면 처음 배우는 게 배열이다.
그런데 왜 콜렉션에는 배열 같은 게 없을까?
그리고 왜 코딩 테스트 답안을 보면 스트림 같은 걸로 문제를 푼 사람들이 많을까?
배열, 리스트, 스택, 큐 같은 게 자료구조의 기본아닌가?
그런 건 다 어디가고 뭔가 이상한 것들이 쓰이고 있는 것 같지?
문제가 주어지면 기본적인 자료구조를 이용해 내가 알고리즘을 다 짜야 되는 거 아닌가?
그 이야기를 좀 해 보자.
(다음 페이지로)
'자바 > 자바 자료구조' 카테고리의 다른 글
[묘공단] 스택 이야기 (0) | 2024.04.22 |
---|---|
자바 - List - ArrayList 뽀개기 - 2 (0) | 2024.04.14 |
자바 - List - ArrayList 뽀개기 - 1 (0) | 2024.04.14 |
자바에서 사용할 수 있는 자료구조의 종류 (0) | 2024.04.14 |
자바 자료구조 학습 중 궁금한 점 (0) | 2024.04.14 |