vector
는 ArrayList의 구버전
으로 현재는 거의 쓰이지 않는다.
ArrayList와 동일한 내부 구조를 가지고 있으나 차이점은 동기화를 지원하여 처리속도는 느리지만 안정적이라는 점이다. ( 멀티 쓰레드 환경에서 동시 실행 불가 )
Vector 선언
List<Type> list = new Vector<Type>();
// 기본형 타입은 Warrper 클래스로 작성
// 나머지 사용법은 ArraList와 동일하다.
[prev] - Data - [next] -chain- [prev] - Data - [next]
양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 빠른 성능을 발휘한다.
ArrayList와 사용방법은 똑같지만 내부 구현이 인접 참조 링크를 체인처럼 관리한다.
ArrayList는 객체가 중간 인덱스에 삭제되거나 삽입될 때 뒤의 객체들의 인덱스가 변경되지만, LinkedList는 중간 인덱스의 객체가 변경되더라도 앞 뒤 링크만 변경되고 나머지 링크는 변경되지 않는다.
연결된 링크만 변경하여 보다 빠르게 삽입, 삭제가 가능함
LinkedList 선언
List<String> list = new LinkedList<String>();
지금까지 ArrayList
Vector
LinkedList
클래스의 객체를 생성하였지만 참조변수의 타입은 이들의 조상 인터페이스인 List
를 사용하였다.
다형성에 대한 측면에서 생각해보면 쉽게 이해가 가능하다. 하나의 참조변수로 3가지의 클래스를 모두 다룰 수 있기 때문이다.