본문 바로가기
자바/자바 자료구조

자바 자료구조 개요

by 신재은👩🏼‍💻 2024. 4. 13.

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 클래스에서 정적 메서드로 제공한다.

 

=>

 

그런데 혹시 궁금증 들지 않나?

자료구조하면 처음 배우는 게 배열이다.

그런데 왜 콜렉션에는 배열 같은 게 없을까?

그리고 왜 코딩 테스트 답안을 보면 스트림 같은 걸로 문제를 푼 사람들이 많을까?

배열, 리스트, 스택, 큐 같은 게 자료구조의 기본아닌가?

그런 건 다 어디가고 뭔가 이상한 것들이 쓰이고 있는 것 같지?

 

문제가 주어지면 기본적인 자료구조를 이용해 내가 알고리즘을 다 짜야 되는 거 아닌가?

 

그 이야기를 좀 해 보자.

(다음 페이지로)