java中集合元素随机抽取有没有什么好方法

时间:2022-09-03 16:26:10
以前随机数Random是取连续一段数中得某个随机数,1~100(55)
现在需要在一个集合里(装满object)中随机抽取出若干
我想到得办法比较笨,将这些object放到map里,key是生成得连续得索引,如果有100个元素,取100以内随机数
然后找到对应得元素,有没有什么好方法啊?

4 个解决方案

#1


可以尝试使用 java.util.Collections.shuffle(list);

然后按需要取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就是要取得的对象。
  }
}

#4


引用 1 楼 ChDw 的回复:
可以尝试使用 java.util.Collections.shuffle(list); 

然后按需要取list的前N个元素就可以

此方法最简单,学习了。

#1


可以尝试使用 java.util.Collections.shuffle(list);

然后按需要取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就是要取得的对象。
  }
}

#4


引用 1 楼 ChDw 的回复:
可以尝试使用 java.util.Collections.shuffle(list); 

然后按需要取list的前N个元素就可以

此方法最简单,学习了。