2009-11-19 1 views
-1
public interface InnerMap<V> extends Map<String, V> { 
    Map<String, V> getInnerMap(String prefix); 
} 

: 또한innermap과 outermap 관계가있는 해시 맵에서 해시 맵을 만들고 싶습니까? 예를 들어

baseMap.put("aabb", "one"); 
baseMap.put("aabbddd", "two"); 
InnerMap map1 = baseMap.getInnerMap("aa"); 
map1.get("bb") => "one" 
map1.get("bbdd") => "two" 
map1.get("aa") => null 
map2 = map1.getInnerMap("bb"); 
map2.get("dd") => "two" 

및 가능한 모든 내부지도를 추적 할 방법에게 그것은 어려울 것이다

+0

질문 무엇입니까? –

+0

무엇이 문제입니까? 당신은 당신이 원하는 것을 선포했습니다, 지금 당신은 무엇에 대해 묻고 있습니까? –

+0

지도 >을 사용하지 않는 이유가 있습니까? –

답변

2

을 넣어 무시하고 싶어. 키를 인덱싱 한 경우에는 내 것보다 훨씬 더 효율적인 솔루션이 될 것입니다. 그러나, 빠르고 더러운 것이 당신을 위해 일하는 경우에, 이것을 시도하십시오. 당신은 언어를 언급하지 않았고 그래서 당신은 자바를 얻고 있습니다 - 내가 맞히기를 희망합니다!

import java.util.HashMap; 
import java.util.Map.Entry; 

public class InnerMap extends HashMap<String, String> { 

    public InnerMap getInnerMap(String key) { 
     InnerMap innerMap = new InnerMap(); 
     for (Entry<String, String> entry : entrySet()) { 
      String existingKey = entry.getKey(); 
      String value = entry.getValue(); 
      if (existingKey.startsWith(key)) { 
       String newKey = existingKey.substring(key.length()); 
       innerMap.put(newKey, value); 
      } 
     } 
     return innerMap; 
    } 

} 

public class Test { 
    public static void main(String[] args) { 
     InnerMap baseMap = new InnerMap(); 
     baseMap.put("aabb", "one"); 
     baseMap.put("aabbdd", "two"); 
     InnerMap map1 = baseMap.getInnerMap("aa"); 
     System.out.println(map1.get("bb"));// => "one" 
     System.out.println(map1.get("bbdd"));// => "two" 
     System.out.println(map1.get("aa"));// => null 
     InnerMap map2 = map1.getInnerMap("bb"); 
     System.out.println(map2.get("dd"));// => "two" 
    } 
} 
+1

이 질문에 답하려면 몽상가 여야합니다. – guerda

+0

"몽상가 여야합니다 ..."고객의 요구 사항이 더 좋지 않습니다. 그러나 예제의 제목과 동작을 살펴보면 분명히 이후의 모습과 비슷하게 보입니다. – vickirk

+0

예를 들어 내 코드를 사용해 시작할 수 있습니까? – monorailkitty

관련 문제