코드스테이츠_국비교육/[Section1]

16.08_컬렉션 프레임워크[List<E>]_22.09.13

생각없이 해도 생각보다 좋다. 2022. 9. 15. 21:39

List<E>

>의미

: Collection<E>를 상속받는 인터페이스

: 객체용 배열같은 기능

: 배열처럼 객체를 일렬로 늘어놓은 구조를 취함.

: 저장된 객체에 자동으로 인덱스가 부여되며, 해당 인덱스로 컬렉션을 검색, 추가, 삭제 등을 할 수 있음.

>List 인터페이스를 구현한 클래스

: ArrayList, Vector, LinkedList, Stack 등

 

ArrayList<E>

>ArrayList 생성

ArrayList<E> 참조변수명 = new ArrayList<E>(); //1
ArrayList<E> 참조변수명 = new ArrayList<E>(int initialCapacity); //2
ArrayList<E> 참조변수명 = new ArrayList<E>(Collection<E> c); //3

//1: E 타입의 ArrayList에 생성. 배열 용량(default)=10
//2: E 타입의 ArrayList에 생성. 배열 용량=int initialCapacity
//3: E 타입의 ArrayList에 생성. 주어진 컬렉션을 ArrayList로 변환

//추가로 배열 용량이 증가될 땐, 1.5배씩 증가함

>의미 및 특징

: List<E>를 구현한 클래스.

: List의 특징은 모두 갖고 있음. (데이터 순서, 중복 여부)

: 검색하기 위한 컬렉션 저장에 특화된 프레임워크

: 모든 요소에 인덱스를 부여하여 데이터를 관리함. (배열과 유사)

: 메모리 공간에 요소들이 연속적으로 저장되어 있음. (배열과 유사)

: 배열처럼 크기가 정해져 있지 않음. 즉, 초기 저장 용량을 정해도 객체를 추가하면 자동으로 저장용량이 늘어남.

: 특정 인덱스에 객체를 추가 및 제거하면 해당 인덱스 이후 데이터가 자동으로 한 칸씩 밀림.

: 이는 수정된 객체 외의 나머지 객체들이 복사, 붙여넣기가 자동으로 실행되는 것이고, 때문에 컬렉션 변경(추가, 삭제) 처리 속도가 느리다.

: 하지만 모든 객체에 인덱스가 부여되기 때문에 검색 속도는 빠르다.

: 컬렉션 프레임워크 중 가장 많이 사용됨.

: Vector를 개선한 것이기 때문에 Vector보다 ArrayList를 주로 사용

>공식 문서
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

 

LinkedList

>LinkedList 생성

LinkedList<E> 참조변수명 = new LinkedList<E>(); //1
LinkedList<E> 참조변수명 = new LinkedList<E>(Cellection c); //2

//1: E 타입의 LinkedList 생성.
//2: E 타입의 LinkedList 생성. 주어진 컬렉션을 LinkedList 변환

>의미 및 특징

: List<E>를 구현한 클래스.

: List의 특징은 모두 갖고 있음. (데이터 순서, 중복 여부)

: 데이터를 추가, 삭제 변경하는데 특화된 프레임워크

: ArrayList와 다르게 메모리 공간에 데이터가 불연속적으로 저장되어 있음.

: 데이터들이 주소값과 이를 참조함으로써 서로 연결(Link)되어 있음.

: 각 요소(node)들은 이전 요소의 주소값, 다음 요소의 주소값, 그리고 저장한 데이터로 구성됨.

: 연결된 요소 중 이전 요소가 없거나, 다음 요소가 없을 경우에는 null 참조함.

: link의 특징 때문에 요소를 추가하고 삭제하는데 처리 속도가 빠름.

: node2를 삭제하면, node1는 node3을 참조하고, node3은 node1을 참조하게 된다.

: 하지만 컬렉션에 순번(인덱스)이 없기 때문에 원하는 컬렉션을 찾기 위해서는 원하는 노드까지 순차적으로 모두 접근해

야한다. 속도가 느리다

>공식 문서

https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html

 

//ArrayList와 LinkedList의 장단점을 비교하는 표도 하나 만들자