Vector
클래스에서 제공하는 동기화가 필요합니까? 그렇지 않다면 Vector
클래스를 사용하고 싶지 않습니다. (그 대신에 ArrayList
을 사용하면 JList
만 허용됩니다.) 최근 JVM 버전에서 비 동시성 동기화 비용이 방법보다 낮습니다. 여전히 불필요한 동기화를 사용할 이유가 없습니다.
Kathy Van Stone이 Vector
에서 추가 동기화를 언급 한 것처럼 보입니다.
참고 조심스럽게 public JList(Vector<?> listData)
에 대한 JavaDoc을 :
생성 된 모델은 직접 주어진 벡터를 참조합니다. 목록을 구성한 후 벡터를 수정하려고하면 정의되지 않은 동작이 발생합니다.
불행하게도, public JList(Object[] listData)
에 대한 javadoc에서는 같은 경고가 있습니다
생성 된 모델은 직접 지정된 배열을 참조합니다. 목록을 구성한 후에 배열을 수정하려고하면 정의되지 않은 동작이 발생합니다.
당신은 누군가가 Vector
이 같은 방법으로 나중에 유용하다는 것을 결정하는 것이 어떤 가능성이 있는지 결정해야하므로이 같은 코드 수정 :
Vector vec = new Vector<String>(LinkedHashMap.keySet());
jList1.setListData(vec);
// Other stuff with Vector
vec.add(....); // Adding some data type that fits in the Vector
을 ... 또는 과정의 Array constructor 버젼과 같은 변경.
항상 안전한쪽에 있고 새로운 벡터/개체를 인스턴스화하는 것이 더 좋을 것입니다 ... 실제로 하나의 여분의 개체를 만들 여유가 없다면 –
어떤 방식 으로든 배열이나 vectory를 만들거나, 그것은 단지 반복 작성하고 작성하는 것이 더 효율적이라는 것입니다. Intuition은 배열을 말하지만 실제로 테스트는 순서대로 진행됩니다. – Yishai
@Yishai : 사실, 타이밍을 중요하게 생각하면 프로필을 작성하십시오. 그러나 벡터가 동기화 되었기 때문에 (내부적으로 배열에 의해 뒷받침됩니다.) 순수 배열이 더 느리면 놀랍습니다. – Eddie