에 216 개의 항목이 들어 있다고 가정하면 LinkedHashMap<Integer, Object>
에서 처음으로 100 개의 값 (여기에는 Object
)을 어떻게 얻을 수 있습니까?HashMap 또는 LinkedHashMap에서 제한된 수의 값을 가져 오는 방법은 무엇입니까?
답변
미운 한 줄
이 추한 할 (그리고 질문의 경우에 ArrayList<Object>
을 반환) 할 한 줄 :
Collections.list(Collections.enumeration(lhMap.values())).subList(0, 100)
이뿐만 아니라 HashMap
을 위해 일 것 그러나 HashMap
은 HashSet
으로 뒷받침됩니다. 입력 한 처음 100 개의 값을 얻을 수 있다고 보장 할 수는 없습니다. 비슷한 제한이있는 다른 유형에서도 작동합니다.
주 :
- 상대적으로 unefficient (! 알고 Javadoc을 읽어 이유 - 더있을지라도),
- 주의, (더 알기 위해 자바 독을 읽기)보기를 사용
- I 그것이 추한 것을 언급했다.
단계적인 사용 예
Map<Integer, Pair<Double, SelectedRoad>> hashmap3 =
new LinkedHashMap<Integer, Pair<Double, SelectedRoad>>();
// [...] add 216 elements to hasmap3 here somehow
ArrayList<Pair<Double,SelectedRoad>> firstPairs =
Collections.list(Collections.enumeration(hashmap3.values())).subList(0, 100)
// you can then view your Pairs' SelectedRow values with them with:
// (assuming that:
// - your Pair class comes from Apache Commons Lang 3.0
// - your SelectedRoad class implements a decent toString())
for (final Pair<Double, SelectedRoad> p : firstPairs) {
System.out.println("double: " + p.left);
System.out.println("road : " + p.right);
}
카운터를 사용할 수 있습니다. 카운터가 100에 도달하면 foreach 루프가 종료됩니다.
Iterator.next()
을 100 번 사용하는 루프를 작성한 다음 중지합니다.
나는 NavigableMap
과 SortedMap
에 대해 말하려고했으나 인터페이스는 키가 아니라 인덱스로 정의되었습니다. 그럼에도 불구하고 실제로 근본적인 문제가 무엇인지에 따라 유용 할 수 있습니다.
제목이 HashMap
인 경우 시작하는 것이 좋습니다. 그다지 의미가 없습니다. HashMap
에는 특별한 순서가 없으며 호출간에 순서가 변경 될 수 있습니다. 그것은 LinkedHashMap
에 대한 더 이해가됩니다.
Iterable<Object> first100Values = Iterables.limit(map.values(), 100);
또는
// Or whatever type you're interested in...
Iterable<Map.Entry<Integer, Object>> firstEntries =
Iterables.limit(map.entrySet(), 100);
당신은 그에서 목록을 만들거나 반복 할 수 있습니다, 또는 당신이 원하는 무엇이든 :이
, 나는 Guava의 Iterables.limit
방법을 사용하십시오 해야 할 것.
+1 구아바에 대해, 나는 그 하나를 곧바로 생각했다. 그러나 나는 그것이 웬일인지, 여기에서 원하지 않는다고 생각했다. 무한한 선보다 훨씬 더 좋은 방법으로 무한히 나아질 것입니다. – haylem
당신은 할 수 있습니다 :
Map<Integer, Object> records;
List<Entry<Integer, Object>> firstHundredRecords
= new ArrayList<Entry<Integer, Object>>(records.entrySet()).subList(0, 100);
이지도에서 모든 항목을 복사 않습니다하지만.
100 개의 객체 참조를 복사하는 것은 그렇게 비싸지 않습니다. 그것처럼. –
실제로 216 개의 참조를 복사합니다. 그러나 여전히 비싼 것은 아닙니다. –
Ah - yes - 전체 목록을받은 하위 목록이 새 목록에서 호출됩니다. TooManyBracketsConfusionError;) –
라이브러리를 사용하여 필요한 레코드 만 복사하십시오.
Map<Integer, Object> records;
List<Entry<Integer, Object>> firstHundredRecords = new ArrayList<>();
for(Entry<Integer, Object> entry : records.entrySet()) {
firstHundredRecords.add(entry);
if (firstHundredRecords.size()>=100) break;
}
감사합니다. 정말 좋은 솔루션입니다! –
'Map
- 1. HashMap 값의 속성을 가져 오는 방법은 무엇입니까?
- 2. imageMagick에서 제한된 수의 파일 가져 오기
- 3. NSTextField 내부에서 값을 가져 오는 방법은 무엇입니까?
- 4. JavaScript에서 ID 또는 클래스로 값을 가져 오는 방법은 무엇입니까?
- 5. asp.net mvc에서 datalisttext 또는 selectedtext의 값을 가져 오는 방법은 무엇입니까?
- 6. 안드로이드에서 데이터베이스의 listview 또는 tableview에 값을 가져 오는 방법은 무엇입니까?
- 7. 체크 박스에서 값을 가져 오는 방법은 무엇입니까?
- 8. app.config에서이 구성 값을 가져 오는 방법은 무엇입니까?
- 9. Datagrid보기 셀 값을 가져 오는 방법은 무엇입니까?
- 10. 이 상위 값을 가져 오는 방법은 무엇입니까?
- 11. jsoup로 param 값을 가져 오는 방법은 무엇입니까?
- 12. ListBoxItem의 컨트롤에서 값을 가져 오는 방법은 무엇입니까?
- 13. jTextField 값을 실시간으로 가져 오는 방법은 무엇입니까?
- 14. 열에서 고유 값을 가져 오는 방법은 무엇입니까?
- 15. 자바 스크립트로 값을 가져 오는 방법은 무엇입니까?
- 16. 클래스 요소에서 값을 가져 오는 방법은 무엇입니까?
- 17. 콤보 상자에서 값을 가져 오는 방법은 무엇입니까?
- 18. 테이블에서 인덱스 값을 가져 오는 방법은 무엇입니까?
- 19. SharePoint에서 목록의 값을 가져 오는 방법은 무엇입니까?
- 20. stdClass 객체에서 값을 가져 오는 방법은 무엇입니까?
- 21. 이 값을 CGFloat로 가져 오는 방법은 무엇입니까?
- 22. 문자열을 검색하고 값을 가져 오는 방법은 무엇입니까?
- 23. build.properties에서 persistence.xml로 값을 가져 오는 방법은 무엇입니까?
- 24. org.w3c.dom.Document의 Element 값을 가져 오는 방법은 무엇입니까?
- 25. repeater itemtemplate에서 값을 가져 오는 방법은 무엇입니까?
- 26. PHP에서 URL 값을 가져 오는 방법은 무엇입니까?
- 27. json 출력에서 값을 가져 오는 방법은 무엇입니까?
- 28. 대괄호 내에서 값을 가져 오는 방법은 무엇입니까?
- 29. PHP에서 필드 값을 가져 오는 방법은 무엇입니까?
- 30. JSON에서 부울 값을 가져 오는 방법은 무엇입니까?
당신이 (당신의 질문/제목처럼) 값을 원하거나 기록 마십시오 (영업의 의견에 따라) (키 : 귀하의 진술과 같은 값 쌍)? – haylem
values () 객체로! –
좋아, 그렇게 생각해. 고마워, 내 대답 (또는 다른 사람)을 참조하십시오. 나는 당신의 질문을 명확하게하기 위해 약간 썼다. – haylem