PL 문법/JAVA

[JAVA] Array와 List 차이점 / 컬렉션 프레임워크 ArrayList<E>, LinkedList<E>

jHoon0223 2021. 6. 28. 16:09
배열 (Array) : 여러 데이터를 하나의 이름으로 그룹핑하여 관리하기 위한 자료구조
배열의 장점 배열의 단점
크기가 정해져 있다.
(이미 정해진 크기로 인해 작고 가벼우며, 메모리 또한 작음)
크기가 정해져 있다.
(미리 크기 지정 필요,
크기보다 큰 인덱스에 접근하면 에러 발생)
기능이 없다.
(단순함, 좋은 구성요소가 될 수 있음)
기능이 없다.
(불편함, 데이터의 삭제, 추가 등이 불가능)

 

리스트 (List) : 순서가 있고, 값의 중복을 허용하는 자료구조

추가하는 경우

Array는 지정 인덱스에 추가할 경우, 크기가 제한되어 있어 데이터가 덮어 씌워진다.

List는 지정 인덱스에 추가할 경우, 유동적으로 한칸 뒤로 밀고 끼어든다.

 

삭제하는 경우

Array는 지정 인덱스를 삭제할 경우, 그 인덱스 공간이 비어진 상태로 남는다.

List는 지정 인덱스를 삭제할 경우, 유동적으로 삭제한 공간을 한칸 앞으로 당겨버린다.

 

ArrayList : List안에 Array개념을 사용한 자료구조

ArrayList는 중간 인덱스에 접근하여 추가/삭제 할 경우, 기존의 인덱스들이 앞뒤로 밀리고 당겨지기 때문에 

추가/삭제 시 속도가 느리다는 단점이 존재한다.

하지만, 인덱스를 활용하여 데이터를 가져오기 때문에 조회 속도가 매우 빠르다는 장점을 가지고 있다.

 

- 생성
ArrayList<E> list = new ArrayList<>();

- 추가
list.add(10);
list.add(20);
list.add(30);

- 추가 (인덱스 지정) : 해당 인덱스에 값이 하나 추가되고 뒤의 값은 하나씩 밀림
arr.add(1, 30);    //1번째 인덱스에 30을 넣음

- 삭제
list.remove(2);    //2번째 인덱스를 지움

- 참조
list.get(2);    //2번째 인덱스의 값을 참조

- 갯수
list.size();

 

컬렉션 프레임워크 ArrayList<E>와 LinkedList<E>의 차이점

  ArrayList LinkedList
조회 인덱스를 활용하여 조회하기 때문에
속도가 빠르다.
데이터의 각 노드가
이전, 이후 노드만 참조 가능하고,
조회 시 각 노드를 거쳐
이동을 해야하기에 속도가 느리다.
추가/삭제 데이터의 추가/삭제 이후,
해당 인덱스를 기준으로 모든 데이터를 뒤/앞으로 옮겨야 하기에
메모리 사용에 비효율적이다.
참조값으로 앞, 뒤 노드가
연결되어 있어 필요한 값만 참조하여
추가/삭제가 가능하기에
메모리 사용에 효율적이다.

 

length, length(), size() 의 차이

1. length : 배열의 길이 확인

int arr[] = { 1, 2, 3, 4 };
System.out.println(arr.length);    //4

2. length() : 문자열의 길이 확인

String str = "Sample Str";
System.out.println(str.length());    //10

3. size() : 컬렉션 타입의 길이 확인

ArrayList<Object> array = new ArrayList<>();
array.add(10);
array.add(20);
System.out.println(array.size());    //2
728x90

'PL 문법 > JAVA' 카테고리의 다른 글

[JAVA] BufferedReader와 BufferedWriter  (0) 2021.06.27