2012-11-09 62 views
1

我想從給定的集合中創建一組獨特的成員。這是我迄今爲止所擁有的。從給定的列表中做出不同的選擇

import java.util.*; 
import java.lang.*; 

class Main 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     /* Putting all team-mates in HashMap */ 

     HashMap<String, Integer> map = new HashMap<String, Integer>(); 
     map.put("a", 1); 
     map.put("b", 2); 
     map.put("c", 3); 
     map.put("d", 4); 

     /* Printing out the random name and the Unique number with it*/ 

     List<Integer> valuesList = new ArrayList<Integer>(map.values()); 
     List<String> keyList = new ArrayList<String>(map.keySet()); 
     System.out.println("The Team members are :"); 
     for (int i = 0; i < 3; i++) 
     { 
      int randomIndex = new Random().nextInt(valuesList.size()); 
      Integer randomValue = valuesList.get(randomIndex); 
      String randomKey = keyList.get(randomIndex); 
      System.out.println(randomValue+" "+randomKey); 
     } 
    } 
} 

當我運行這個,我在我的列表中重複,我使用Collections.shuffle(valuesList)?

謝謝。

+1

'import java.lang。*;'not required ...,'java.lang.Exception' ??? – Mordechai

回答

0

如果A,B,C,d是所有你後,這是我會怎麼做:

import java.util.*; 
import java.lang.*; 

class Main 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     /* Putting all team-mates in a List*/ 

     List<String> list = new ArrayList<String>(); 
     list.add("a"); 
     list.add("b"); 
     list.add("c"); 
     list.add("d"); 

     /* Printing out the random name */ 

     System.out.println("The Team members are :"); 
     for(int i = 0; i < 3; i++) 
     { 
      int randomIndex = new Random().nextInt(list.size()); 
      //Integer randomValue = valuesList.get(randomIndex); 
      String randomValue = list.remove(randomIndex); 
      //String randomKey = keyList.get(randomIndex); 
      System.out.println(randomValue); 
     } 
    } 
} 

去除一旦選定將確保他們不會重新出現在列表中選擇元素。

更少的行。

+0

一起使用它的工作原理.. a,b,c,d將是實際名稱。 – user1813084

+0

可隨時標記爲已接受的答案,如果它爲你工作 – amphibient

1

你可以隨機得到兩個相同的數字,所以Collections.shuffle(...)應該這樣做。

+0

是的,洗牌收集並按順序打印。或者,如果重新排序集合是不可取的,請將隨機數字鍵清除並使用它們。 – 9000

+0

Collections.shuffle(ValuesList)似乎與valuesList.remove(randomIndex) – user1813084

相關問題