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의 장단점을 비교하는 표도 하나 만들자
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
16.10_컬렉션 프레임워크[Map]_22.09.13 (0) | 2022.09.15 |
---|---|
16.09_컬렉션 프레임워크[Set<E>]_22.09.13 (0) | 2022.09.15 |
16.07_컬렉션 프레임워크[개요]_22.09.13 (0) | 2022.09.15 |
16.06_예외 처리_22.09.13 (0) | 2022.09.15 |
16.05_열거형_22.09.13 (0) | 2022.09.14 |