怎么随机从数组中挑拣出随机数

怎么随机从数组中挑拣出随机数,每个挑出来的数字都不能和别的数字重复,代码怎么写?

http://zhidao.baidu.com/link?url=L4VaiOCDbeRGyvYweBBuEHIg8NMZ6Xe34Uwy-Os5SECC_HNbklpTFnwenv7Sqx435yXx-FB5FfoMcKGN9tcP5_

用集合写行吗?我的是在20个数字中随机选择10个数,不能重复。
public static void main(String[] args) {
Random r = new Random();
HashSet hs = new HashSet();

    for(int x=0;x<10;){
        int w=r.nextInt(20)+1;
        hs.add(w);
        if(hs.size()==10)
            break;
    }
    //第一种
    System.out.print(hs);
    //第二种
    Iterator it = hs.iterator();
    while(it.hasNext()){
        Object n = it.next();
        System.out.print(n+",");
    }
}
public static void main(String[] args) {
   List<Integer> list = new ArrayList<Integer>();
   for(int i =1;i<=10;i++){
       //初始化数组{1,2,3,4,5,6,7,8,9,10};
       list.add(i);
   }

   Random random = new Random();

   while(list.size()>0){
       int i = random.nextInt(list.size());
       System.out.println(list.get(i));
       //每拿完一个数,就在数组里清楚该数即可 (如果后继还要用到该数组,就先用一个临时数组来存储)
       list.remove(i);
   }
}

可以利用set集合的不可重复的特点,进行随机数选择