Есть ли более эффективный способ (желательно O (1), а не O (n), но , по крайней мере, быстрее, чтобы ввести), чтобы придать тип векторам вектор?Эффективно типные элементы вектора в Java
public Vector<String> typecastVector(Vector<Object> objects){
Vector<String> strings = new Vector<String>();
for(Object o : objects)
strings.add((String) o);
return strings;
}
Примечание
Для тех, кто работает в очевидной необходимости типаж в Vector
или другой Generic класс: как принято отвечающему указывает, что это, вероятно, code smell, и вы, вероятно, нужно refactor код в иерархии классов.
В частности, если вы еще не сделали, вы должны рассмотреть создание классов, использование указанных Vector
или другое использование Generic класса Generics сами. Когда я сделал это в своем собственном коде, я полностью исключил необходимость в функции в моем коде, которая была аналогична вышеуказанной функции.
Если вы никогда не реализовывали Generics в своем собственном коде, проверьте ссылку «Generics» выше. Вы можете быть удивлены (как и я), чтобы найти, что они могут быть использованы для реализации именно тех функций, которые, по вашему мнению, вам нужны из Vector
typecast.
Единственное, что можно сказать об этом, - это использовать новый ArrayList (objects.size()), который инициализирует список с правильным размером. Вы не можете получить быстрее, чем O (n). – f1sh
Примечание: я не * хочу * создать независимый вектор. Известно, что исходный вектор