由于HashSet和HashMap的关系太近了,HashSet在底层是用HashMap来实现的,只不过没有Value的集合,只有一个Key的集合,所以也可使用HashSet来实现,如下代码:

import java.util.HashSet;
import java.util.Random;

/**
 * 使用HashSet实现
 * @Description:

 * @File: Test.java

 * @Package None

 * @Author Hanyonglu

 * @Date 2012-10-18 下午06:11:41

 * @Version V1.0
 */
public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        Object[] values = new Object[20];
        HashSet<Integer> hashSet = new HashSet<Integer>();
      
        // 生成随机数字并存入HashSet
        for(int i = 0;i < values.length;i++){
            int number = random.nextInt(100) + 1;
            hashSet.add(number);
        }
      
        values = hashSet.toArray();
      
        // 遍历数组并打印数据
        for(int i = 0;i < values.length;i++){
            System.out.print(values[i] + " ");
          
            if(( i + 1 ) % 10 == 0){
                System.out.println(" ");
            }
        }
    }
}

  这样实现效率稍微好些。如果给我们限定了数组的长度,只需要变换下for循环,设置成whlie循环可以了。如下所示:

import java.util.HashSet;
import java.util.Random;

/**
 * 使用HashSet实现
 * @Description:

 * @File: Test.java

 * @Package None

 * @Author Hanyonglu

 * @Date 2012-10-18 下午05:11:41

 * @Version V1.0
 */
public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        Object[] values = new Object[20];
        HashSet<Integer> hashSet = new HashSet<Integer>();
      
        // 生成随机数字并存入HashSet
        while(hashSet.size() < values.length){
            hashSet.add(random.nextInt(100) + 1);
        }
      
        values = hashSet.toArray();
      
        // 遍历数组并打印数据
        for(int i = 0;i < values.length;i++){
            System.out.print(values[i] + " ");
          
            if(( i + 1 ) % 10 == 0){
                System.out.println(" ");
            }
        }
    }
}