日期:2014-05-20  浏览次数:20695 次

用HashSet写生成随机数的方法为何不行?
请高手帮忙看看,为何每次显示的都是1-10,而不是无序的数?
import java.util.HashSet;
import java.util.Iterator;


public class Demo {

public static HashSet<Integer> set=new HashSet<Integer>();
  //定义生成随机数列的方法
    public static void randomSet(int min,int max,int range){
        int temp = (int)(Math.random()*(max-min+1)+min);
        set.add(temp);
        while(set.size()<range){
            randomSet(min,max,range);
          if(set.size()==range){
            break;
           }
        }
    }



public static void main(String[] args) {
randomSet(1,10,10);
Iterator it = set.iterator();
/* while(it.hasNext()){
System.out.println(it.next());
}*/
System.out.println("开始打印hashset");
for(int i:set){
System.out.println(i);
}


}
}

------解决方案--------------------
改了一下,换成List来实现你想要的功能:

import java.util.ArrayList;
import java.util.List;

public class Demo {

private static List<Integer> list=new ArrayList<Integer>();

    //定义生成随机数列的方法
  public static void randomSet(int min,int max,int range){
      int temp = (int)(Math.random()*(max-min+1)+min);
      if(!list.contains(temp))
      {
       list.add(temp);  
      }
      
      if(list.size()<range){
          randomSet(min,max,range);
      }
  }
     
  public static void main(String[] args) {
      randomSet(1,10,10);
    
      System.out.println("==========================================");
      
      for(int temp:list)
      {
       System.out.println(temp);
      }              
  }

}