Language/JAVA

[JAVA] Chapter 11. Collections Framework

:_: 2022. 6. 2. 17:36
자바의 정석을 공부하면서 공부내용을 정리했습니다.

 

List : 순서가 있는 데이터의 집합, 중복허용한다.

Set : 순서가 없는 데이터의 집합, 중복을 허용하지 않는다.

Map : 키와 값으로 이루어진 데이터의 집합, 키는 중복을 허용하지 않고 값은 중복을 허용한다.

 

🌱 ArrayList

List 인터페이스를 상속받은 여러 클래스 중 하나이다.

Object 배열을 이용해 데이터를 순차적으로 저장한다.

자바에서 기본적으로 많이 사용한다.

크기가 가변적으로 변한다.

 

ArrayList list = new ArrayList(); 

 

🌱 LinkedList

배열의 단점(크기 변경할 수 없다, 데이터를 일어오는데 시간이 오래걸린다)을 보완하기 위해서 사용

불연속적으로 존재하는 데이터를 서로 연결한 상태로 구성되어 있다.

배열처럼 데이터를 이동하기 위해 복사하는 과정이 없기 때문에 처리속도가 매우 빠르다.

이동방향이 단방향이라 다음 요소에 대한 접근은 쉽지만 이전 요소에 대한 접근은 어렵다.

 

ArrayList 와 LinkedList 비교 

- 순자적으로 추가/삭제하는 경우 ArrayList가 더 빠르다.

- 중간 데이터를 추가/삭제하는 경우 LinkedList가 더 빠르다.

 ArrayList 는 각 요소들을 재배치하면서 추가 공간을 확보하거나 빈 공간을 채워야 하기 때문이다.

 

LinkedList 는 저장해야하는 데이터의 개수가 많아질 수록 접근시간(데이터를 읽어오는 시간)이 길어진다는 단점이 있다.

 

🌱 Stack과 Queue

스택은 LIFO구조이고 큐는 FIFO 구조로 되어 있다.

스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.

큐는 데이터의 추가/삭제가 쉬운 LinkedList로 구현하는 것이 적합하다.

 

🌱Arrays

Arrays 클래스에는 배열을 다루는데 유용한 메서드가 정의되어 있다.

toString()은 배열의 모든 요소를 문자열로 출력할 수 있다. 단, 일차원 배열에서만 사용가능하다.

 

🌱 HashSet

Set인터페이스를 구현한 가장 대표적인 컬렉션.

중복된 요소를 저장하지 않고 저장순서를 유지하지 않는다.

 

새로운 요소를 추가할 때는 add 메서드나 addAll 메서드를 사용한다.

 

🌱 TreeSet

이진 검색크리라는 자료구조 형태로 데이터를 저장하는 컬렉션 클래스이다.

중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서도 유지하지 않는다.

 

🌱 HashMap

key와 value을 묶어서 하나의 데이터로 저장한다는 특징을 갖는다.

key와 value을 각각 Object 타입으로 저장한다. 

key는 저장된 값을 찾는데 사용하기 때문에 유일해야 한다.

많은 양의 데이터를 검색하는데 뛰어난 성능을 보인다.

 

entrySet() 이용해  키와 값을 함께 읽어 올 수 있다

getKey(), getValue() 를 이용해 키와 값을 따로 읽어 올 수 있다.

 

HashMap은 키와 값 모두 Object 타입으로 저장하기 때문에 HashMap의 값으로 HashMap 을 다시 저장할 수 있다.

 

🌱 TreeMap

이진검색트리 형태로 키와 값의 쌍으로 이루어져있어 검색과 정렬에 적합하다.

검색에 관한 대부분은 HashMap 이 더 뛰어나므로 범위 검색이나 정렬이 필요한 경우 TreeMap 을 사용한다. 

 

 

😀 Collections Framework 예제 코드

 

GitHub - kyunghee28/javastudy: 자바의 정석 스터디

자바의 정석 스터디. Contribute to kyunghee28/javastudy development by creating an account on GitHub.

github.com

 

728x90