2011-05-07 4 views

답변

7

Vector : 인터페이스가 아닌 클래스이기 때문에 API가 요구하지 않는 한 절대로 사용하지 마십시오.

List : 기본 배열과 같은 컬렉션이어야합니다. 그것은 인터페이스이므로 아무것도 필요한 경우 List이 될 수 있습니다.

Vector 스레드 (그리고이 밖에 예 ArrayList, LinkedList, CopyOnWriteArrayList, ImmutableList 다양한 기능 세트 List 구현 많은 임)하지만, 그렇게 Collections.synchronizedList() 래퍼이다.

배열 : 드물지만 API에서 필요한 경우. 배열의 다른 주요 이점은 고정 길이 배열의 프리미티브가 필요할 때 Integer 개체에 박스형으로 입력해야하는 List<Integer>에 비해 필요한 메모리 공간이 상당히 컴팩트하다는 점입니다.

2

Vector (또는 List) 얼마나 많은 요소가 삽입 될지 미리 알지 못할 때.

array 벡터의 전체 수명에서 요소의 최대 개수를 절대적으로 알고있을 때.

List 또는 Vector (해당 컬렉션의 경우)을 사용할 때 높은 성능 저하가 없으므로 항상 사용하도록 선택했습니다. 그들의 융통성은 고려되지 않는 데 너무 중요합니다.

요즘 나는 절대적으로해야 할 때 arrays만을 사용합니다. 예 : API가 필요한 API를 사용할 때.

0

우선 ArrayList는 Vector보다 빠른 구현이지만 (thread safe는 아님).

미리 길이를 알고 많이 바뀌지 않으면 배열을 사용하면 편리합니다.

0

메서드를 선언 할 때는 List을 사용하십시오.

Vector은 JDK의 초기 부분이며 Collections으로 작업 할 수 있도록 개조되었습니다.

성능에 민감한 알고리즘이있는 경우 개인 배열 구성원이 유용 할 수 있습니다. 내용을 반환하거나 메서드에 전달해야하는 경우 일반적으로 Arrays.asList(thePrivateArray)과 같이 간단하게 개체를 구성하는 것이 가장 좋습니다. 스레드로부터 안전한 목록의 경우 : Collections.synchronizedList(Arrays.asList(thePrivateArray)). 배열 내용의 수정을 막기 위해 일반적으로 Collections.unmodifiableList(Arrays.asList(thePrivateArray))을 사용합니다.

관련 문제