J2SE 5.0의 ArrayList와 Vector의 차이는 뭔가요?

이한길의 이미지

제가 보기에는 거의 차이가 없어보입니다..

그런데 두가지가 존재하는건 분명 차이가 있을 텐데..

무슨 차이가 있는지 궁금합니다..

atie의 이미지

자바 포럼의 faq을 여기서도 보게 되는군요.

둘은 extends와 implements가 동일하니 쌍둥이라고도 할 수 있을 만큼 동일합니다. 하지만 차이가 있는데,

Quote:

Vector는 synchronized이고, ArrayList는 아닙니다.
Vector는 1.0 부터 있어왔고, ArrayList는 1.2에서부터 생겼습니다.
Vector는 크기 조절이 알아서 되는 Array 오브젝트를 구현하려고 생겼다가 1.2가 나올 때 동일한 목적을 가진 List를 구현한 것으로 바뀌어 Collection framework에 포함이 되었습니다.
따라서 1.2부터는 다음처럼 써서 필요할 때 바꿔치는 것이 됩니다.
List list = new ArrayList()
List list = new Vector() 

그럼 둘 중에 무엇을 쓰느냐가 다음 질문인데, ArrayList를 씁니다. 만약 concurrent 프로그래밍을 위해 Vector처럼 synchronized가 필요하면 Collections.synchronizedList()라는 Collections의 wrapper method를 다음처럼 쓰면 됩니다.
List list = Collections.synchronizedList(new ArrayList(...));

그럼 Vector는 언제 쓰느냐 라는 질문이면, 저는 1.1 호환의 예전 소스나 책에 매인 것이 아니라면 Vector는 쓰지말라고 하겠습니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

이한길의 이미지

고맙습니다... 자바5로 갈아타면서.. 바뀐 부분들 적응이 쉽지 않네요..
문법도 문법이지만.. api까지도.. 그렇군요..

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com