Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java映射分组_Java_Hashmap - Fatal编程技术网

Java映射分组

Java映射分组,java,hashmap,Java,Hashmap,我有一个带值的映射,我想根据键的和部分对映射值进行分组 map.put("20160710-20160711 T0_20160712-20160713 T0",0.8584570960451277); map.put("20160710-20160711 T0_20160714-20160715 T0",0.500990414391463); map.put("20160710-20160711 T0_20160716-20160717 T1",0.5020244439749132); map.

我有一个带值的映射,我想根据键的和部分对映射值进行分组

map.put("20160710-20160711 T0_20160712-20160713 T0",0.8584570960451277);
map.put("20160710-20160711 T0_20160714-20160715 T0",0.500990414391463);
map.put("20160710-20160711 T0_20160716-20160717 T1",0.5020244439749132);
map.put("20160710-20160711 T0_20160718-20160719 T1",0.43098357500551543);
map.put("20160710-20160711 T0_20160720-20160721 T4",0.5153793685149496);
map.put("20160710-20160711 T0_20160722-20160723 T3",0.4623046631067317);
map.put("20160710-20160711 T0_20160724-20160725 T0",0.4512717518558771);
map.put("20160710-20160711 T0_20160726-20160727 T4",0.36536108872340967);
map.put("20160710-20160711 T0_20160728-20160729 T1",0.3912641598156222);
map.put("20160710-20160711 T0_20160730-20160731 T4",0.28587189421297915);

map.put("20160710-20160711 T1_20160712-20160713 T1",0.8580146171263094);
map.put("20160710-20160711 T1_20160714-20160715 T1",0.9332823713689552);
map.put("20160710-20160711 T1_20160716-20160717 T0",0.71982167666725);
map.put("20160710-20160711 T1_20160718-20160719 T2",0.8699615471928571);
map.put("20160710-20160711 T1_20160720-20160721 T2",0.9278777878143865);
map.put("20160710-20160711 T1_20160722-20160723 T2",0.9344990001901656);
map.put("20160710-20160711 T1_20160724-20160725 T3",0.9400899408159816);
map.put("20160710-20160711 T1_20160726-20160727 T0",0.8886183195622867);
map.put("20160710-20160711 T1_20160728-20160729 T2",0.8298196046334939);
map.put("20160710-20160711 T1_20160730-20160731 T1",0.8409421997212592);

map.put("20160710-20160711 T2_20160712-20160713 T3",0.6215375875768216);
map.put("20160710-20160711 T2_20160714-20160715 T2",0.6464517487397089);
map.put("20160710-20160711 T2_20160716-20160717 T0",0.18854087266412126);
map.put("20160710-20160711 T2_20160718-20160719 T0",0.7104484324839435);
map.put("20160710-20160711 T2_20160720-20160721 T2",0.2253283933151363);
map.put("20160710-20160711 T2_20160722-20160723 T4",0.6041580606290883);
map.put("20160710-20160711 T2_20160724-20160725 T2",0.41264702138230575);
map.put("20160710-20160711 T2_20160726-20160727 T1",0.34820930964241165);
map.put("20160710-20160711 T2_20160728-20160729 T4",0.6120977235710975);
map.put("20160710-20160711 T2_20160730-20160731 T1",0.12926293940300582);
首先,我想为每个唯一的键创建一个名为的文件夹 然后我想在此文件夹中创建一个data.csv文件,其中包含key.substring21,38及其值

例如,假设我们在一个循环中

对于i=0

我将创建一个名为20160710-20160711 T0的文件夹,然后在此文件夹中创建data.csv文件。然后,我会在每一行的文件中写入以下内容:

20160712-20160713 T0,0.8584570960451277 20160714-20160715 T0,0.500990414391463 20160716-20160717T1,0.5020244439749132 20160718-20160719 T1,0.43098357500551543 20160720-20160721 T4,0.51537936851496 20160722-20160723T30.4623046631067317 20160724-20160725T0,0.4512717518558771 20160726-20160727T4,0.36536108872340967 20160728-20160729T1,0.3912641598156222 20160730-20160731 T4,0.28587189421297915

对于i=1,我将创建名为20160710-20160711 T1的文件夹,然后在其中创建data.csv并在其中写入以下值

20160712-20160713T1,0.8580146171263094 20160714-20160715 T1,0.9332823713689552 20160716-20160717 T0,0.7198216766725 20160718-20160719 T2,0.8699615471928571 20160720-20160721T2,0.92787778143865 20160722-20160723t20.9344990001901656 20160724-20160725T30.9400899408159816 20160726-20160727 T0,0.8886183195622867 20160728-20160729t20.8298196046334939 20160730-20160731T1,0.8409421997212592

等等。 应该继续这样下去。。我的问题是如何在java映射中解析和分组密钥,对我来说,仅仅分组映射就足够了,创建文件和编写就不重要了。
非常感谢您的关注和真诚,并致以最诚挚的问候。

这里是我过去在地图上分组的代码片段 希望这是一个好的开始

   Map<String, Map<String, Double>> output = new HashMap<>();
   for (String key : map.keySet()) {
        Map m = output.get(key.substring(0, 17));
        if (!output.containsKey(key.substring(0, 17)))
            m = new HashMap<>();
        output.get(key.substring(0, 17)).put(key.substring(17, 21), map.get(key))
   }
您需要的代码是:

Map<String, List<Entry<String, String>>> result = 
  map.entrySet().stream().collect(Collectors.groupingBy(e->e.getKey().substring(0,17)));

这将把映射转换为流,然后将其转换为从字符串到条目列表的映射。如果愿意,您还可以在对方付费之前向流中添加更多呼叫来筛选或映射条目。

您的问题是什么?既然你没有问任何问题,我猜你是在找人为你编写代码的人?@ErwinBolwidt我不是在找人来编写我的代码,我的问题是如何在java映射中解析和组键。很抱歉误解了。在Java8中使用Streams来实现这一点会更好:请参阅我刚才添加的答案。