java 随机数的相关有关问题,求大神们帮帮忙!非常感谢

java 随机数的相关问题,求大神们帮帮忙!非常感谢!
需求是这样的,有一个数组或者list集合,里面存放着很多五位数的ID,例如:35178 这样的数据。现在我要不间断的随机去里面取一个ID出来,而且取出过的ID就不能再进行随机,只能全部都随机完一遍,再重复重新进行随机。以此类推。请问这样该怎么去做?我想到的就是打比方有两个篮子,一个篮子里装满了苹果,一个是空的,然后一个一个拿到空的篮子里,拿完了之后再倒回之前的篮子里进行再一个一个拿。不知这样的思路对不对?希望各位帮帮我!java 随机数的相关有关问题,求大神们帮帮忙!非常感谢
------解决思路----------------------



private ArrayList<Integer> mdlist = new ArrayList<Integer>();
private int postion = 0;//下标
HashMap<Integer,Integer> historyMap= new  HashMap<Integer,Integer>();

private int getRandomNum() {
    int index = 0;
    //先清空集合
    if(mdlist.size()>0){
        mdlist.clear();
    }



    //循环播放列表获取所有歌曲的ID
    for (int i = 0; i < musicList.size(); i++) {
        mdlist.add(musicList.get(i).getId());
    }

    //如果都取完了,重置一下
    if (historyMap.size() == mdlist.size()) {
             historyMap.clear();
    }
    //如果列表只有两首或者一首歌曲
    if (musicList.size() < 2) {
        //index =  mdlist.get(0);
    }else{
        int did = MyApplication.getSharedPreferences();//获取当前播放的歌曲ID
        while (true) {
            index = random();//获取随机数
            if (!historyMap.containsKey(index)) {
                  historyMap.put(index ,index );
                  break;
            }
          //  if(index != did){
          //      break;
         //   }
        }
    }
    //设置当前播放歌曲
    for (int i = 0; i < musicList.size(); i++) {
        if(musicList.get(i).getId()==index){
            MyApplication.saveSharedPreferences(index);
            MyApplication.setCurrentMusic(musicList.get(i));
            break;
        }
    }
   
    return index;
}
 
/**获取随机歌曲ID*/
public int random(){
    postion = random.nextInt(mdlist.size());//根据集合的size来设置随机范围
    return mdlist.get(postion);//返回随机歌曲ID
}





你试试吧
















------解决思路----------------------
执着的妹子么java 随机数的相关有关问题,求大神们帮帮忙!非常感谢,你来这里问题其实也就是百度算法嘛,本质没区别,你还不如百度,思路是这样,从一堆数组里面拿出一个数判断hashset里面是否有,没有就存入hashset,直到hashset的size和之前的一样,不过这样的算法冗余度较长