现在需要在一个集合里(装满object)中随机抽取出若干
我想到得办法比较笨,将这些object放到map里,key是生成得连续得索引,如果有100个元素,取100以内随机数
然后找到对应得元素,有没有什么好方法啊?
4 个解决方案
#1
可以尝试使用 java.util.Collections.shuffle(list);
然后按需要取list的前N个元素就可以
然后按需要取list的前N个元素就可以
#2
数组啊,list之类的都可以啊,生成随机数,把那个做为index,取出相应位置上的东东
#3
Collection c;//待抽取的集合。
int count;//要抽取的数量。
if(count<=c.size() && count>0){
ArrayList list = new ArrayList(c.toArray());
Random rand = new Random();
for(int i=0;i<count;i++){
int index = rand.nextInt(list.size());
Object obj = list.remove(index);
///obj就是要取得的对象。
}
}
int count;//要抽取的数量。
if(count<=c.size() && count>0){
ArrayList list = new ArrayList(c.toArray());
Random rand = new Random();
for(int i=0;i<count;i++){
int index = rand.nextInt(list.size());
Object obj = list.remove(index);
///obj就是要取得的对象。
}
}
#4
此方法最简单,学习了。
#1
可以尝试使用 java.util.Collections.shuffle(list);
然后按需要取list的前N个元素就可以
然后按需要取list的前N个元素就可以
#2
数组啊,list之类的都可以啊,生成随机数,把那个做为index,取出相应位置上的东东
#3
Collection c;//待抽取的集合。
int count;//要抽取的数量。
if(count<=c.size() && count>0){
ArrayList list = new ArrayList(c.toArray());
Random rand = new Random();
for(int i=0;i<count;i++){
int index = rand.nextInt(list.size());
Object obj = list.remove(index);
///obj就是要取得的对象。
}
}
int count;//要抽取的数量。
if(count<=c.size() && count>0){
ArrayList list = new ArrayList(c.toArray());
Random rand = new Random();
for(int i=0;i<count;i++){
int index = rand.nextInt(list.size());
Object obj = list.remove(index);
///obj就是要取得的对象。
}
}
#4
此方法最简单,学习了。