Collection : ArrayList, LinkedList

임미선·2022년 6월 14일
0

자바 컬렉션 중 List 인터페이스의 구현 클래스인 ArrayList와 LinkedList에 대해 알아보겠습니다.

Link 인터페이스는 순서가 있는 데이터의 집합으로 데이터의 중복을 허용합니다.

자료구조

LinkedList는 양방향 포인터 구조로 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조입니다. 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당합니다. 중간에 데이터를 추가나 삭제하더라도 전체 인덱스가 한 칸씩 뒤로 밀리거나 당겨지는 일이 없기에 ArrayList에 비해서 데이터의 삭입/삭제가 용이합니다. 배열의 크기가 커져도 삽입/삭제 속도에 변화가 없습니다.

그러나 인덱스가 없기에 특정 요소에 접근하기 위해서는 순차 탐색을 필요로 하여 검색 속도가 떨어지고, ArrayList보다 메모리를 좀 더 많이 먹는다는 단점이 있습니다.


ArrayList는 일반적인 배열과 같은 단방향 포인터 구조로, 인덱스로 객체를 관리합니다. 각 데이터에 대한 인덱스를 가지고 있어 검색 속도가 빠릅니다.

그러나 데이터의 삽입/삭제시 인덱스 전체가 당겨지거나 밀리기 때문에 크기가 커질수록 데이터의 삽입/삭제 속도가 떨어집니다.

선언

LinkedList<T> 변수 이름 = new LinkedList<>();
ArrayList<T> 변수 이름 = new ArrayList<>();

또는

List<T> 변수 이름 = new LinkedList<>();
List<T> 변수 이름 = new ArrayList<>();

💡 변수나 메소드를 선언할때 데이터 타입을 List로 정의하면(메소드의 경우 피라미터의 데이터 타입을 List로 설정하면) List 인터페이스의 다양한 구현 클래스를 모두 포함할 수 있으므로 다형성있게 코드를 작성할 수 있습니다.

profile
미선이네

0개의 댓글