ArrayList
•
데이터의 순서를 유지하며 메모리에 저장.
•
인덱스로 원소들을 관리
•
용량이 꽉 차면 용량을 늘려주는 메서드를 갖고있음
•
객체 생성 시 초기 용량을 설정해주지 않으면 기본 용량은 10이다
•
데이터의 삽입/삭제 시 삽입/삭제되는 데이터 이후의 배열을 복사하고 이동시킨다
장점
•
데이터의 순서가 유지되며 메모리에 저장되므로 데이터의 탐색에 유리하다
단점
•
데이터의 삽입/삭제 시 배열을 복사해야 하므로 속도가 느리다
LinkedList
•
데이터가 하나의 노드로 구성되어 있고 내부적으로 양방향 연결 리스트로 구성되어 있다
◦
자료의 주소값으로 원소끼리 연결되어 있는 구조
◦
각 데이터는 자신의 이전/다음 데이터만 알고있다
•
데이터의 삽입/삭제 시 해당 데이터를 가리키는 데이터 노드의 주소값만 변경해주면 된다
장점
•
데이터의 삽입/삭제 성능이 좋다
•
데이터의 삽입/삭제 시 데이터의 이동이 필요하지 않다
단점
•
포인터의 사용으로 저장공간의 낭비가 있다
•
데이터 조회 시 순차적 접근으로 인해 시간이 많이 소요된다
•
알고리즘이 복잡하다
ArrayList, LinkedList의 차이
1.
ArrayList는 index로 데이터를 참조하고, LinkedList는 앞,뒤 데이터의 주소로 데이터를 참조한다
2.
데이터의 삽입/삭제 시 ArrayList보다 LinkedList가 속도가 더 빠르다
→ ArrayList는 데이터의 이동이 필요하기 때문에 느리다
3.
데이터의 조회 시 LinkedList보다 ArrayList의 속도가 더 빠르다
→ ArrayList가 index로 데이터를 조회하기 때문에 빠르다
한 줄 정리
ArrayList는 index로 데이터를 참조하고, LinkedList는 데이터 노드가 갖고있는 이전/다음 데이터의 주소값으로 데이터를 참조한다.
ArrayList는 데이터의 삽입/삭제 시 다른 데이터를 복사 및 이동해야 하므로 성능이 좋지 않지만, LinkedList의 경우 삽입/삭제 하려는 데이터의 이전/다음 데이터의 주소값만 변경하면 되므로 성능이 좋다.
ArrayList는 index로 데이터를 참조하므로 무작위 접근이 가능해 데이터 조회의 성능이 좋고, LinkedList는 순차 접근만 허용하므로 데이터 조회의 성능이 좋지 않다