在Map中遍历传递键

时间:2011-01-17 07:30:34

标签: java map traversal

我有Map<String, String>,其中包含以下元素:{“a”=“b”,“b”=“c”,“c”=“d”,“z”=“y”,...}

我需要一个方法:

List<String> getTransitiveKeys(String startKey);// assuming the map is visible somehow as `map`

调用getTransitiveKeys(“a”)时,将返回[“a”,“b”,“c”]。调用getTransitiveKeys (“z”)时,它将返回[“z”]。

方法中需要递归吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

List<String> getTransitiveKey(String key) {
   List<String> result = new LinkedList<String>();
   while(map.containsKey(key)) {
    // avoid endless loops
    if(result.contains(key)) {
      break;
    }

    result.add(key);  
    key = map.get(key)
  }
  return result;
}

答案 1 :(得分:0)

为什么递归?只是一个循环

while(map.get(startKey) != null) {
    startKey =  map.get(startKey);
}