public boolean add(Object o)
Adds the specified element to this set if it is not already present.就是说当TreeSet里面没有相同的元素才加,你循环100次,不一定有100各不同的值。换成10000应该也有可能结果不是100,但是几率小很多,你还没有碰到。

解决方案 »

  1.   

    那我怎么random出100个不同的数字呢?除了扩大数值范围
    另外,random的seed真正的作用是啥?
      

  2.   

    检查treeSet的大小,不够再过大搜索范围.
      

  3.   

    是初始化随机数发生器,使得每次程序启动时,Random所得到的随机数都不同。
      

  4.   

    import java.util.*;
    class  RandomNum
    {
    static int MAX = 10;
    static Random rn = new Random();
    public static void main(String[] args) 
    {
    TreeSet treeSet = new TreeSet();
    for(int i=0;i<100;i++){
    treeSet.add(new Integer(rn.nextInt(5000)));
    }
    if(treeSet.size()<100){
    for( int i=0;i<100;i++ ){
    treeSet.add(new Integer(rn.nextInt(5000)));
    if( treeSet.size()>=100 ){
    break;
    }
    }
    }
    System.out.println("size is "+treeSet.size());
            }
    }第二次循环次数可以设的大一点,没关系的,反正会break,应为要判断size第一次的循环还是要的。seed是规定范围的数,随即次序应该是由系统时间来产生的。
      

  5.   

    随机数中可能有重复。而SET中不允许出现重复对象,所以重复的INTEGER没加到SET中,以至于其SIZE为九十多,不等。
      

  6.   

    import java.util.*;
    class  RandomNum
    {
    static int MAX = 10;
    static Random rn = new Random();
    public static void main(String[] args) 
    {
    TreeSet treeSet = new TreeSet();
    for(int i=0;i<100;i++){
    treeSet.add(new Integer(rn.nextInt(5000)));
    }
    while(treeSet.size()<100){
        treeSet.add(new Integer(rn.nextInt(5000)));
             }
    System.out.println("size is "+treeSet.size());
            }
    }晕了,不好意思,上面写得不好,这个没问题了。可以确保。
      

  7.   

    如果你想得到的是100个不重复的随机数,那只接用
    while(treeSet.size()<100){
       treeSet.add(new Integer(rn.nextInt(5000)));
    }
    如果你想得到100个数,而不管是否相同,那就不应该用TreeSet,它实现的是Set接口,不能容纳重复项,改用Vector,它的内容是可相同重复的
    for(int i=0;i<100;i++){
       vector.add(new Integer(rn.nextInt(5000)));
    }
    这样求得的size就是100啦。