1. ArrayList
- List 인터페이스를 구현한 구현 클래스
- 배열처럼 수집한 원소를 인덱스로 관리하며 저장용량을 동적관리 ( default : 10 )
2. VectorList
- Vector 의 주요 메서드는 동기화 메서드로 구현되어 있으므로 멀티 쓰레드에 적합하도록 설계되어있다.
public synchronize E remove(int index){
}
public synchronize E get(int index){
}
- 동기화 메서드는 하나의 공유 객체를 2개의 쓰레드가 동시에 사용할 수 없도록 만든 메서드다.
- 동기화를 하지 않으면 하나의 List객체가 있을 때 하나의 쓰레드는 데이터를 읽고, 또 하나의 쓰레드는 데이터를 삭제하는 작업을 동시에 수행해 작업이 충돌할 수 있다.
- 정리하자면 ArrayList와 동일한 기능을 수행하지만, 멀티쓰레드에서의 작업이 가능하게 만들어진 것이고, 싱글 쓰레드에서는 굳이 사용할 이유가 없다.
3. LinkedList
- Linkedlist는 저장 용량을 매개변수로 갖는 생성자가 없기 때문에 객체를 생성할 때 저장 용량을 지정할 수 없다.
- 데이터를 저장하는 방식이 ArrayList와 다르다.

- ArrayList : 모든 데이터를 위치 정보와 값으로 저장
- LinkedList : 앞뒤 객체의 정보를 저장 (모두 연결됨)
이 때문에 추가, 삭제 , 검색 메소드를 실행했을때 속도가 다르다.

추가, 삭제를 했을때는 LinkedList가 빠르고 검색을 했을때는 ArrayList가 빠르다.