2014-06-13 3 views
0

지금 나는이 같은 Map 있습니다Java 특정 키 내에서 모든 맵 값을 얻으려면 어떻게해야합니까?

Map<Double, MyObject> map = new HashMap<Double, MyObject>(); 

내가 2.07.0 사이에 키의 모든 값을 얻을 싶어요. Map에는 수천 개의 다른 값이 있으므로 모든 key-value을 반복하면 성능이 저하됩니다. 이 문제를 해결할 방법이 있습니까? (아니면 숫자 키를 사용하는 특수한지도가 있습니까?)

+0

[TreeMaps] (http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html)를 참조하십시오. 이 키를 사용하면 키를 기반으로 서브맵을 만들 수 있습니다. –

답변

4

대신 TreeMap을 사용하십시오. NavigableMap 인터페이스를 통해 범위 작업을 수행 할 수 있습니다.

NavigableMap<Double, MyObject> map = new TreeMap<>(); 
Collection<MyObject> keys = map.subMap(2D, 7D).values(); 
+0

답변 해 주셔서 감사합니다. 그러나 거기에 열쇠에 하나 이상의 값을 갖는 방법이있다 (예 : Double, Double). – Victor2748

+0

예, 키에 대한 고유 한 클래스를 정의 할 수 있습니다. 'TreeMap'과 함께 사용하려면 순서를 정의하고 키 클래스가'Comparable' 인터페이스를 구현해야합니다. (양자 택일로, 당신은'Comparator' 객체로 주문을 표현할 수 있습니다.) – erickson

+0

기술적으로,'subMap (K, K)'는'SortedMap' 인터페이스를 통해 사용할 수 있습니다. – shmosel

관련 문제