在Java中创建向量的一部分
我有一个向量在Java中创建向量的一部分,java,arrays,vector,Java,Arrays,Vector,我有一个向量myvector;大小为0-400,我希望我的方法返回一个位置为0-100的新向量(如果存在)。但我的代码是: return (Vector< MyClass >) myvector.sublist( 0, Math.min(myvector.size,100) ); 我做错了什么?我怎样才能修好它 提前感谢,因为子列表返回的是列表而不是向量。子列表返回的是列表。无法将列表转换为向量 通常有人建议,在可能的情况下,您应该使用接口类型的引用,而不是具体类型的引用。遵循此建
return (Vector< MyClass >) myvector.sublist( 0, Math.min(myvector.size,100) );
我做错了什么?我怎样才能修好它
提前感谢,因为子列表返回的是列表而不是向量。子列表返回的是列表。无法将列表转换为向量 通常有人建议,在可能的情况下,您应该使用接口类型的引用,而不是具体类型的引用。遵循此建议可避免此类难题。的返回类型不一定是类向量,而是列表的实现。您可以通过以下方式解决此问题:
return new Vector<MyClass>(myvector.subList(0, Math.min(myvector.size(), 100)));
编辑:感谢Stjepan和Steve注意到不必要的条件。子列表将返回一个列表。如果要执行此操作,必须执行以下操作:
new Vector(myList);
为什么使用if/else而不只是返回新的vectoryvector.subList0,Math.minmyvector.size,100@Stjepan Rajko最初在我写它的时候,我认为myvector.size==0的情况会产生一个错误——但仔细看,事实证明并非如此。我想我可以以可读性为借口,但那会有点单薄-大小永远不会小于0,因此返回新的vectoryvector.subList0,Math.minmyvector.Size,100;永远不会被处决的。嗯。。。首先,myvector.sublist应该是myvector.sublist,这样代码甚至不应该编译。
new Vector(myList);