2013-08-05 1 views
0

여기에 표시되는 해시 맵이 있습니다.해시 맵에서 가장 큰 값을 찾는 가장 좋은 방법은 다음과 같습니다. <Arraylist, Arraylist>

HashMap<ArrayList<Integer>,ArrayList<String>> 

나는 두 번째의 ArrayList에서 가장 큰 길이() (값)

이 작업을 수행하는 가장 효율적인 방법은 무엇입니까와의 ArrayList를 찾으려면?

+0

지도의 entrySet을 반복해야합니다. ArrayLists 값이 정렬되면 마지막 요소를 볼 수 있습니다. 그렇지 않으면 모든 요소를 ​​하나씩 확인해야합니다. – Kon

답변

3

할 수 있습니다 돌이지도의 values() : 당신이했을의 HashMap에있는 ArrayLists 일단

ArrayList<Integer> maxKey = null; 
int maxLen = 0; 

for (Entry<ArrayList<Integer>, ArrayList<String>> e : map.entrySet()) { 
    int len = e.getValue().size(); 

    if (maxKey == null || len > maxLen) { 
     maxKey = e.getKey(); 
     maxLen = len; 
    } 
} 
+0

'map.values ​​()'의 마지막 ArrayList가'null' 인 경우 다른 것이 실제 크기 일지라도 가장 길다는 것이 'null'이라고합니다. 아마도 if 문은'if (max! = null && list.size()> max.size())' – wlyles

+0

@wlyles 중 하나가 'null'이라면'list.size()'이 호출됩니다. OP가 맵에서 null 값을 갖고 있다면 (실제로는 안된다), 그는이 접근법을 쉽게 체크 할 수있다. 그러나 기본 개념은 동일하게 유지됩니다. – arshajii

+0

가장 큰 길이의 ArrayList로 키를 찾아야한다면 어떻게해야할까요? – AKS

0

:

ArrayList<String> max = null; 

for (ArrayList<String> list : map.values()) { 
    if (max == null || list.size() > max.size()) 
     max = list; 
} 

키가 가장 큰 값과 연관된하려면 가장 큰 길이의 것을 찾도록 그들을 열거하십시오. 그러나 SortedMap 인터페이스를 사용하여 키를 각 배열 목록의 길이로 추가 색인으로 사용할 수 있으며 마지막 색인을 매우 효율적으로 언제든지 선택할 수 있습니다.

관련 문제