我有一个带有两个字符串键的嵌套地图(地图中/地图中)。本质上,我要做的是拥有一组节点,并且找到它们之间的最短路径。但是,我需要存储它们,以后再使用它们,因此我执行了以下操作:

private Map<String, Map<String,Object>> TravelTime =
new HashMap<String, Map<String,Object>>();


我使用循环为该Map提供值,其中ParkingDests是另一个HashMap的一组键(字符串):

ParkingDests = ParkingAttributes.keySet().size();
for (int i = 0;i< ParkingDests; i++){
    for (int j = 0;j< ParkingDests; j++){

        <code> TravelTime.put(keyone,keytwo,Shortest) </code>

    }
}


我想我需要的是这样的东西:

TraveTime.put(ParkingDests(i),ParkingDest(j), ShortestRoute)


但是我找不到办法。
我知道Guava表(我知道这正是我所需要的),但是我更愿意在这种情况下找到解决方案。

最佳答案

您想要在添加新路由之前检查是否已添加辅助HashMap。在这里,我假设ParkingDests是一个String数组。我还假定,您的标记意味着您正在将此循环包装在一些生成ShortestRoute对象的代码中。绝对不需要将其存储为通用对象,但是我相信您只是为了我们的利益而很好地简化了您的问题:)

for (int i = 0;i< ParkingDests; i++){
    for (int j = 0;j< ParkingDests; j++){

        <code>
        second = TravelTime.get(ParkingDests[i])
        if(second == null) {
            second = new HashMap<String, Object>()
            TravelTime.put(ParkingDests[i], second);
        }
        second.put(ParkingDests[j],Shortest);
        </code>

    }
}


另请注意,我建议不要像编辑过的问题一样将keySet用作ParkingDests。您不会因此得到保证的订单。您应该将ParkingDests保留为数组。

10-04 14:06