Вам нужна синхронизация, предоставляемая классом Vector
? Если нет, то вы не хотите использовать класс Vector
. (Если только JList
разрешено использовать вместо него ArrayList
.) Стоимость незапланированной синхронизации на способ ниже в последних версиях JVM, намного ниже, чем раньше. Тем не менее, нет причин использовать ненужную синхронизацию.
Похоже, Кэти Ван Стоун, возможно, имеет в виду эту дополнительную синхронизацию в Vector
.
Обратите внимание на JavaDoc для public JList(Vector<?> listData)
:
Созданная модель напрямую ссылается на данный Вектор. Попытки изменить
Вектор после построения списка приводит к неопределенному поведению.
К сожалению, JavaDoc для public JList(Object[] listData)
имеет такое же предупреждение:
Созданная модель ссылается на данный массив напрямую. Попытки изменить
массив после построения списка приводит к неопределенному поведению.
Вы должны решить, есть ли вероятность того, что кто-то решит, что 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.