用于将数据保存到映射中的数据结构为键值对

时间:2015-06-19 08:58:31

标签: 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<String, Map<String, List<String>>>.

如上所示,地图中只引入了一个新密钥,其值为上一个地图。所以请告知如何创建这样的地图

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

我已经尝试过我在下面展示的Google guava库,但我希望通过java本身实现相同目标。请告知我如何通过java实现相同的目标

$inizio_giorno=oreToMinuti("08:00");
$fine_giorno=oreToMinuti("20:00");
$inizio_notte=oreToMinuti("20:00");
$fine_notte=oreToMinuti("08:00");
$conto_minuti_giorno="";
$conto_minuti_notte="";
while($row2=mysql_fetch_array($result2)){
    if($row2["verso"]=="entrata"){
        if(oreToMinuti($row2["ora_effettiva"])<$inizio_giorno){
            $conto_minuti_notte=$fine_notte-oreToMinuti($row2["ora_effettiva"]);
        }
        if(oreToMinuti($row2["ora_effettiva"])>$inizio_giorno){
            $conto_minuti_giorno=oreToMinuti($row2["ora_effettiva"])-$inizio_giorno;
        }
    }else{
        if(oreToMinuti($row2["ora_effettiva"])<$fine_giorno){
            if(oreToMinuti($row2["ora_effettiva"])<$fine_notte){
                $conto_minuti_notte=($fine_notte-oreToMinuti($row2["ora_effettiva"]))-$conto_minuti_notte;
            }else{
                $conto_minuti_giorno=oreToMinuti($row2["ora_effettiva"])-$inizio_giorno-$conto_minuti_giorno;
            }
        }else{
            $conto_minuti_notte=oreToMinuti($row2["ora_effettiva"])-$inizio_notte;
        }
    }
}
echo str_replace("-","",$conto_minuti_giorno." e ".$conto_minuti_notte)."<br />";

3 个答案:

答案 0 :(得分:1)

你快到了:

Map<String, Map<String, List<String>>> map = new HashMap<> ();
map.put("B1", newdatamap);

答案 1 :(得分:1)

关于assylias的答案的更多细节

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

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

    Map<String, List<String>> map2 = new HashMap<String, List<String>>();
    map2.put ("payerName", Arrays.asList("SSSwpn", "wpfSSSnb", "GGGdgeft", "xbtYYYYhy"));
    map2.put ("fixedRate", Arrays.asList("WWdd", "wTTYw", "YYYYtrrty", "IIIhttyure"));

    ultimateMap.put("B1", map1);
    ultimateMap.put("B2", map2);

我无法将其添加为对上一个答案的评论(太长时间)。所以添加了一个新答案。

答案 2 :(得分:0)

这超出了问题的范围,但是OP在评论中问我,我在这里回答:

class Info {
  public final String payerName;
  public final String fixedrate;

  public Info(String pn, String fr) {
    payerName = pn;
    fixedRate = fr;
  }
}

[...]

Collection<Info> myInfo = new LinkedList<>();
myInfo.add(new Info("wpn", "dd"));
myInfo.add(new Info("wpfnb", "ww"));
myInfo.add(new Info("dgeft", "trrty"));
myInfo.add(new Info("xbthy", "httyure"));
Map<String, Collection<Info>> myData = new HashMap<>();
myData.put("B1", myInfo);