维护包含地图的地图

时间:2015-06-12 17:30:18

标签: java

我有一张如下图所示的地图,其中有一个键,值为List

Map<String, List<String> newdatamap = new HashMap<>();
map.put ("payerName", Arrays.asList("wpn", "wpfnb", "dgeft", "xbthy"));
map.put ("fixedRate", Arrays.asList("dd", "ww", "trrty", "httyure"))

我想在上一张地图上添加另一张地图,以便有一个键,其值将是上面的地图。这是正确的数据结构,我们如何实现它?

我想要下面显示的内容

Key         Value

B1          payerName  ----> "wpn", "wpfnb", "dgeft", "xbthy"
            fixedRate ----->"dd", "ww", "trrty", "httyure"



B2          payerName  ----> "SSSwpn", "wpfSSSnb", "GGGdgeft", "xbtYYYYhy"
            fixedRate ----->"WWdd", "wTTYw", "YYYYtrrty", "IIIhttyure"

如上所示,只有一个新的密钥被引入到地图中,其值是前一个地图。 Map数据结构是正确的方法,还是其他任何数据结构都能更好地工作?

请各位建议在答案中建议guava库也将支持JDK 1.5

1 个答案:

答案 0 :(得分:1)

读取之类的内容......你需要一个Map<String, Map<String, List<String>>>

宣布......很简单。

Map<String, Map<String, List<String>>> values = new HashMap<>();

...但索引到以下内容并不愉快:

// get B2's fixed rates
values.get("B2").get("fixedRate");

或许您应该考虑使用Guava's Table课程。它将为您提供清晰的坐标,以确定您想要获得的对象,并保留您的整体结构。

final Table<String, String, List<String>> values = HashBasedTable.create();
values.put("B1", "payerName", Lists.newArrayList("wpn", "wpfnb", "dgeft", "xbthy"));
System.out.println(values.get("B1", "payerName")); // prints the list