我有一个实用程序函数,它将随机播放任何Vector的元素,但会生成有关使用原始类型的一般警告.
static public void shuffle(Random r,Vector v)
{ int sz = v.size();
for(int pass = 0;pass<4;pass++)
{ for(int i=0;i<sz;i++)
{ int j=nextInt(r,sz);
Object ii = v.elementAt(i);
v.setElementAt(v.elementAt(j),i);
v.setElementAt(ii,j);
}
}
}
Run Code Online (Sandbox Code Playgroud)
似乎除了通过压制它们之外似乎没有办法安静警告.更改方法签名以Vector<Object>
限制调用者Vector<Object>.更改为Vector<?>使setElementAt 无法编译.
首先你应该注意到你正在重新发明轮子.
Collections.shuffle(yourVector, yourRandom);
诀窍:-)
为了使您的方法对所有类型的Vectors 都通用,这是编写它的方法:
static public <T> void shuffle(Random r, Vector<T> v) {
int sz = v.size();
for (int pass = 0; pass < 4; pass++) {
for (int i = 0; i < sz; i++) {
int j = nextInt(r, sz);
T ii = v.elementAt(i);
v.setElementAt(v.elementAt(j), i);
v.setElementAt(ii, j);
}
}
},
Run Code Online (Sandbox Code Playgroud)