2013-10-24 4 views
2

내 코드는 자바 목록에서 목록 위의나는 아래와 같은 값을 얻고, 여기에>

List<HashMap<ArrayList<String>, ArrayList<ArrayList<String>>>> al = new ArrayList<HashMap<ArrayList<String>, ArrayList<ArrayList<String>>>>(); 

를 임의의 값을 얻는 방법 : 나는 아무 문제없이 값을 얻고있다

for (HashMap<ArrayList<String>, ArrayList<ArrayList<String>>> entry : al) { 

      for (Entry<ArrayList<String>, ArrayList<ArrayList<String>>> mapEntry : entry 
        .entrySet()) { 
       key = mapEntry.getKey(); 
       value = mapEntry.getValue(); 
      } 

     } 

, 여기 내 문제는 값을 무작위로 (가치가 중복되지) 얻을 필요가 있습니다. 어떻게 임의로 값을 얻을 수 있습니다. 제발 날 도와 줄 수 있습니다.

미리 감사드립니다.

+0

http://stackoverflow.com/questions/929554/is-there-a-way-to-get-the-value-of-a-hashmap-randomly-in-java/929769#929769 –

+0

당신이 원하는 수행 'HashMap'에서 무작위 값을 얻거나,'HashMap'을 무작위로 선택하기를 원합니까? –

+0

난 hashmap에서 임의의 값이 필요합니다. 목록 – user2681425

답변

0

컬렉션 클래스에서 shuffle()을 사용하면 필요를 충족시킬 수 있습니다.

List list = new ArrayList(); Collections.shuffle (list);

+0

, ArrayList를 >>> = 새로운 ArrayList를 , ArrayList를 >>>(); Collections.shuffle (al); – user2681425

+0

하지만 무작위 값을 얻지 못했습니다 – user2681425

1

이 밖으로 시도 :

HashMap<String, Integer> map = new HashMap<String, Integer>(); 
map.put("abc", 1); 
map.put("def", 2); 
map.put("ghi", 3); 

//Creating a list 
List<Integer> list = new ArrayList<Integer>(map.values()); 

//Generating a random value 
int index = new Random().nextInt(list.size()); 

//Result 
Integer value = list.get(index); 
+0

작동하지만 복제가 반복됩니다 – user2681425

+0

@ user2681425 반복없이이 링크를 사용해보십시오 http://stackoverflow.com/questions/15258063/java-random-values-that-not-repeat – Siddh

+0

@ user2681425 도움이 될 것입니다 – Siddh

1

간단한 폴더의 유틸리티 일반적인 방법 : 당신은 ThreadLocalRandom을 사용할 수 있습니다

static public <T> T getRandom(List<T> list){ 
    if(list == null || list.isEmpty()){ 
     return null; 
    }else{ 
     return list.get(rand.nextInt(list.size())); 
    } 
} 
+1

코드 블록을 포함하는 답변은 항상 사람들에게 쓰인 것처럼 보일 수 있습니다. 코드가 질문에 어떻게 대답하는지 설명 할 수 있습니까? – apaul