用Java创建Vector的一部分

时间:2011-08-25 19:32:12

标签: java arrays vector

我有Vector< MyClass > myvector;大小为0 - 400,我想我的方法返回一个新的Vector,其位置为0-100(如果存在)。但是我的代码:

return (Vector< MyClass >) myvector.sublist( 0, Math.min(myvector.size,100) );

在返回线处崩溃。

ERROR/AndroidRuntime(2053): java.lang.ClassCastException: java.util.Collections$SynchronizedRandomAccessList

我做错了什么?我该如何解决?

提前致谢

4 个答案:

答案 0 :(得分:4)

Vector<MyClass>.subList()返回List<MyClass>List<MyClass>无法转换为Vector<MyClass>

通常建议您,通常应该使用引用接口类型,而不是尽可能使用引用到具体类型。遵循这一建议可以避免这种难题。

答案 1 :(得分:3)

Vector.subList的返回类型不一定是Vector类,而是List的实现。您可以通过以下方式解决此问题:

return new Vector<MyClass>(myvector.subList(0, Math.min(myvector.size(), 100)));

编辑:感谢Stjepan和Steve注意到不必要的条件。

答案 2 :(得分:2)

子列表返回一个List,如果你想这样做,你将不得不这样做:

new Vector(myList);

答案 3 :(得分:1)

因为子列表返回的是列表而不是向量