2012-10-12 8 views
-1

내가 익숙한 것보다 조금 더 고급 자바를 프로그래밍하고 있기 때문에 이것이 내 질문이다. 그래서 오늘은 실제로 당신에게 도움이 필요합니다! HashMap을 감쌀 때 한도를 설정하는 방법은 무엇입니까? 하나에 한계를 만들기 위해 몇 가지 코드를 시도했습니다. 내 문제는 내가 HashMap의에서 임의의 항목을 원하는,하지만 난이 같은 임의의 함수를 사용할 때 :한도로 HashMap을 반복 할 수 있습니까?

Random rand = new Random(); 
int max = list.size(); 
int randomNumber = rand.nextInt(max); 

을 그리고 문제가 때로는 '널 (null)'반환합니다.

Iterator it = list.entrySet().iterator(); 
while (it.hasNext()) { 
if(!stop) 
    Map.Entry pairs = (Map.Entry)it.next(); 
    atm = pairs.getValue(); 
    it.remove(); 
    stop = true; 
} 

그러나이 충돌 내 프로그램 : 은 그 때 나는이 시도. 그래서 이것에 대한 한계를 설정하는 더 좋은 방법이 있습니까?

예를 들어, 학습의 최상의 방법. 당신이 당신의 해시 맵에서 임의의 항목을 원하는 경우 :

+0

그것은 당신의 의도에 대해 조금 더 알게 될 것입니다. 왜지도를 반복하고 싶습니까? iterating하는 동안 엔트리/키/값으로 무엇을 할 것인가? 지도는 어떤 유형을 관리합니까? 언제 그만하고 싶니?. – Gamb

+0

호기심에서 왜 무작위 항목을 원하십니까? 어떤 종류의 문제를 해결하고 있습니까? :) –

+0

Im는 해시 맵에 저장된 quiz whitch의 목록으로 퀴즈 프로그램을 만듭니다. :) – hultberg

답변

0

,이 한 줄 시도 :리스트가 null의 경우 다음처럼 확인 둘 필요가

Map.Entry<K, V> entry = new ArrayList<Map.Entry<K, V>>(map.entrySet()).get(Math.random() * map.size()); 
+0

나는 시험해 볼게. :) – hultberg

+0

ArrayList 유형의 인수 개수가 잘못되었습니다. ; hultberg

+0

@Edvin oops ~ 오류를 수정했습니다. 'ArrayList >'여야합니다. 편집 된 답변을 참조하십시오. – Bohemian

0

int max = null != list ? list.size() : 0; 

나는 이것이 당신이 찾고있는 바란다.

+0

목록에 내용이 있지만 처음 코드를 작성할 때 가끔 "null"이 반환됩니다. – hultberg

관련 문제