Sun에서 LinkedHashMaps 소스 코드를 보면 KeyIterator라는 private 클래스가 있다는 것을 알았습니다. 이것을 사용하고 싶습니다. 어떻게 접근 할 수 있습니까?LinkedHashMap에 대한 keyIterator를 얻으려면 어떻게해야합니까?
답변
당신은
myMap.keySet().iterator();
당신은 심지어 존재 알 필요가 없습니다를 호출하여 그것을 얻을; 이것은 구현의 인공물 일뿐입니다. 아시다시피, 그들은 원숭이를 사용하여 키를 반복 할 수 있습니다. 사양에 따라 반복되는 한, 어떻게 작동하는지 상관하지 않습니다. 그런데
, 당신은 HashMap
는 KeyIterator
라는 개인 클래스가 알고 않았다 (로 할 ConcurrentHashMap
, ConcurrentSkipListMap
, EnumMap
, IdentityHashMap
, TreeMap
및 WeakHashMap
)?
HashMap
의 키를 반복하는 방법에 차이가 있습니까?
편집 : 귀하의 코멘트에 reponse에, 당신은 Map
에 모든 키 - 값 쌍을 반복하려는 경우 점에 유의, 키 반복하고 호출하는 것보다 더 좋은 방법이있다 각각 get
entrySet()
메서드는 모든 키 - 값 쌍 중 Set
을 가져 와서 반복 할 수 있습니다. 그래서 그 대신 쓰기의 :
for (Key key : myMap.keySet()) {
Value val = myMap.get(key);
...
}
당신이 작성해야 : 당신이 원하는 경우
for (Map.Entry<Key, Value> entry : myMap.entrySet()) {
doSomethingWithKey(entry.getKey());
doSomethingWithValue(entry.getValue());
...
}
또한 values()
으로 값을 반복 할 수있다. keySet
, entrySet
및 values
이 Map
interface에 정의되어 있기 때문에, 그들은뿐만 아니라 LinkedHashMap
어떤 Map
을 위해 작동합니다
참고.
LinkedHashMap의 내부 구현 (즉, 소스 코드에서 정의되었지만 API에서는 정의되지 않음)의 일부로 정의 된 것을 사용하면 안됩니다. 다음 릴리스에서 내부 구현이 변경되면 어떻게됩니까? 그것을 사용하는 모든 코드가 중단됩니다.
당신은 API 코드 및
myMap.keySet().iterator()
직접 사용할 수 있도록 그것은, 개인 클래스처럼 뭔가를해야한다.
private class KeyIterator extends LinkedHashIterator<K> {
일반 Iterator를 사용하면 인스턴스가 반환됩니다.
myMap.keySet().iterator()
- 1. Python의 LinkedHashMap에 해당합니다.
- 2. 다른 클래스에 대한 참조를 제대로 얻으려면 어떻게해야합니까?
- 3. CAL에서 모듈 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까?
- 4. ActionFilter에서 ModelState 속성에 대한 참조를 얻으려면 어떻게해야합니까?
- 5. 요격하는 대상에 대한 액세스 권한을 얻으려면 어떻게해야합니까?
- 6. 이 변수에 대한 액세스 권한을 얻으려면 어떻게해야합니까?
- 7. 데이터리스트의 OnItemBound에서 컨트롤에 대한 참조를 얻으려면 어떻게해야합니까?
- 8. Magento - 속성 옵션에 대한 ID를 얻으려면 어떻게해야합니까?
- 9. 파이썬 메서드에 대한 인수를 얻으려면 어떻게해야합니까?
- 10. XmlDocument에서 노드에 대한 스키마 정보를 얻으려면 어떻게해야합니까?
- 11. nhibernate가있는 DTO 멤버에 대한 컬렉션을 얻으려면 어떻게해야합니까?
- 12. Mediawiki에 대한 편집 토큰을 얻으려면 어떻게해야합니까?
- 13. TDSProviderConnection.SQLConnection에 대한 원격 SQLConnection을 얻으려면 어떻게해야합니까?
- 14. Flex에서 사용자 브라우저에 대한 정보를 얻으려면 어떻게해야합니까?
- 15. 함수 내에서 함수에 대한 참조를 얻으려면 어떻게해야합니까?
- 16. 영구 "offline_access"권한에 대한 session_key를 얻으려면 어떻게해야합니까?
- 17. 이름에서 선택자를 얻으려면 어떻게해야합니까?
- 18. CGContextRef에서 UIImage를 얻으려면 어떻게해야합니까?
- 19. C로 주소를 얻으려면 어떻게해야합니까?
- 20. 하위 뷰에 대한 rootViewController에 대한 참조를 얻으려면 어떻게해야합니까?
- 21. TrackPopupMenu에서 니모닉을 얻으려면 어떻게해야합니까?
- 22. CPU 사용법을 얻으려면 어떻게해야합니까?
- 23. ActionExecutingContext에서 MethodInfo를 얻으려면 어떻게해야합니까?
- 24. 파일에서 CGImageRef를 얻으려면 어떻게해야합니까?
- 25. 조치 이름을 얻으려면 어떻게해야합니까?
- 26. 정규식을 올바르게 얻으려면 어떻게해야합니까?
- 27. 프로세스 추적을 얻으려면 어떻게해야합니까?
- 28. json에서 값을 얻으려면 어떻게해야합니까?
- 29. UINavigationBar에서 '매트'색상을 얻으려면 어떻게해야합니까?
- 30. 트랙바 값을 얻으려면 어떻게해야합니까?
내부 전용 클래스를 찾을 때까지 LinkedHashMap을 반복 할 수 있다는 사실이 발생하지 않았습니다. 답변을 주셔서 감사합니다. –
나는 entrySet()의 사용법을 모른다. 하지만, 거의 모든 곳에서 유용합니다. HashMap을 사용합니다. 감사합니다. @ 마이클 – sravanreddy001