둘은 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
자바 포럼의 faq을 여기서도 보게 되는군요.둘은 extends와
자바 포럼의 faq을 여기서도 보게 되는군요.
둘은 extends와 implements가 동일하니 쌍둥이라고도 할 수 있을 만큼 동일합니다. 하지만 차이가 있는데,
그럼 둘 중에 무엇을 쓰느냐가 다음 질문인데, 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로 갈아타면서.. 바뀐 부분들 적응이 쉽지 않네요.
고맙습니다... 자바5로 갈아타면서.. 바뀐 부분들 적응이 쉽지 않네요..
문법도 문법이지만.. api까지도.. 그렇군요..
----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com
댓글 달기