Java

배열, List

훈지런 2022. 6. 11. 15:22

배열과 리스트의 큰 차이점으로는 배열은 크기를 동적으로 변경할수없고 리스트가 동적으로 변한다.

그럼 배열과 리스트의 특징을 정리해보자면

배열

  • 크기가 정해져있어서 크기를 처음에 정해줘야한다.
  • 삭제를해도 그 공간은 삭제된 빈 공간으로 남아있다.
  • 인덱스로 데이터가 관리된다. 유일한 식별자이다.

List

  • 크기가 동적이다. 따라서 리스트에 계속 추가를 하게되어 할당한 크기를 넘어서게되면 사이즈가 추가로 할당된다.
  • 삭제를 하면 그 공간은 다른값으로 대체된다.
  • 인덱스는 사실상 몇번째 데이터다 정도의 의미일뿐

그런데 리스트엔 두가지 종류가 있다. ArrayList, LinkedList...
두 종류의 리스트엔 큰 차이점이 있다.

ArrayList는 인덱스가 순서대로 나열되어있거 그 안에 값이 있다고 하면,
LinkedList는 해당 값에 앞 노드의 주소, 뒷 노드의 주소가 저장되어있다.

그림으로 그려본 ArrayList
그림으로 그려본 LinkedList


따라서 ArrayList의 중간에 값을 추가하거나 삭제하게되면 값이 삭제되고 그 빈공간을 뒷 순서의 데이터가 한칸씩 밀리거나 당겨지는 작업을 하게되어서 추가 삭제에 있어 느리지만, LinkedList는 그냥 중간에 값을 넣어주고 앞뒤 값에 앞노드, 뒷노드의 값만 변경해주면 되므로 ArrayList에 비해 추가, 삭제할때 속도가 빠르다.

마찬가지로 인덱스로 관리가 되는 ArrayList는 탐색에있어서 LinkedList에비해 유리하다고 볼수있다.

 

  추가, 삭제 탐색
ArrayList 느림 빠름
LinkedList 빠름 느림

'Java' 카테고리의 다른 글

클래스, 객체, 인스턴스  (0) 2022.10.06
Map  (0) 2022.06.14
자바 메모리구조 아주 간략하게  (0) 2022.06.03
hashcode와 String 의equals 함수  (0) 2022.06.02
SOLID 원칙  (0) 2022.06.02