有没有一种更有效的方法(最好是O(1),而不是O(n),但至少输入速度更快)来对vector的元素进行类型转换,而不是像这样:
public Vector<String> typecastVector(Vector<Object> objects){
Vector<String> strings = new Vector<String>();
for(Object o : objects)
strings.add((String) o);
return strings;
}
注意
对于那些似乎需要对Vector
或其他泛型类进行强制类型转换的人:正如所接受的答案者指出的那样,这可能是一种代码异味,您可能需要在类层次结构中进行重构。
具体来说,如果您还没有考虑过,应该考虑使使用上述Vector
或其他泛型类的类本身使用泛型。当我在自己的代码中这样做时,我完全消除了我代码中类似于上面函数的功能的需要。
如果您从未在自己的代码中实现过泛型,请查看上面的“泛型”链接。您可能会惊讶地发现,它们可以用于精确实现您认为需要从Vector
类型转换中获得的功能。
new ArrayList(objects.size())
,它将使用正确的大小初始化列表。在此情况下,您无法获得比 O(n) 更快的速度。 - f1sh