JAVA

[JAVA] List Collection(ArrayList / LinkedList / Vector)

집한구석 2021. 6. 26. 17:08
728x90

List Collection

https://programmersought.com/article/1869761384/ 참고

  • 데이터 중복 입력이 가능하며, 순차적이고 다량의 데이터를 입력할 때 사용
  • ArrayList / LinkedList / Vector로 구성됨

ArrayList

  • 내부적으로 인덱스로 관리되는 배열로 이루어진 리스트
  • 내부적으로 기본데이터 저장사이즈가 10으로 정의되어 있음
  • 데이터가 10이상 저장되면, 동적으로 사이즈 1.5배정도 늘어남
  • 인덱스를 통해 조회하기 때문에 조회시 효율적임
  • 특정 인덱스를 삭제시 한칸씩 앞으로 전체이동하고 추가시 한칸씩 뒤로 전체이동하기 때문에 추가 삭제시 매우 비효율적임
  • 동기화되어 있지 않아서, 동기화 처리시 동기화 선언을 해줘야함 

LinkedList

  • 노드가 데이터와 포인트를 가지고 한줄로 연결된 리스트
  • 노드 간에 연결로 이루어짐 (현재노드에서 다음노드의 위치 정보를 가지고 있음)
  • 내부적으로 인덱스를 가지고 있지 않음, 탐색시 순차접근만 가능하여 데이터 조회시 비효율적임
  • 삽입과 삭제시 해당 노드의 위치정보만 바꿔주면 되기 때문에 효율적임 

Vector

  • ArrayList와 내부구조는 동일함 
  • 내부적으로 메소드들이 동기화 처리가 되어있어서, 멀티쓰레드 환경에서 쓰레드 세이프함 
  • 동기화 처리가 되어 있어서 속도적인 부분은 ArrayList보다 느림

'JAVA' 카테고리의 다른 글

[JAVA] Stack / Deque  (0) 2021.07.16
[JAVA] e.printStackTrace() 사용하지 말아야하는 이유  (3) 2021.07.04
[JAVA] String / StringBuilder / StringBuffer  (0) 2021.06.20
[JAVA] HashMap 원리  (0) 2021.06.13
[JAVA] 일급컬렉션  (0) 2021.06.10