Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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_Data Structures_Multimap_Multi Mapping - Fatal编程技术网

Java 如何实现此地图<;字符串,列表<&燃气轮机&燃气轮机;结构

Java 如何实现此地图<;字符串,列表<&燃气轮机&燃气轮机;结构,java,data-structures,multimap,multi-mapping,Java,Data Structures,Multimap,Multi Mapping,我有如下数据: Key value ----- ------ car toyota car bmw car honda fruit apple fruit banana computer acer computer asus computer ibm ... (以上数据的每一行都是一个对象,带有字段“key”和“value”,都在一个列表中列表) 我想将数据构建成地图,如下所

我有如下数据:

 Key       value
-----      ------
car         toyota
car         bmw
car         honda

fruit       apple
fruit       banana

computer    acer
computer    asus
computer    ibm 
...
(以上数据的每一行都是一个对象,带有字段“key”和“value”,都在一个列表中
列表

我想将数据构建成
地图
,如下所示:

 "car"      : ["toyota", "bmw", "honda"]
 "fruit"    : ["apple","banana"]
 "computer" : ["acer","asus","ibm"]
如何从数据对象中实现上述
Map
结构

******除了*********


我更感兴趣的是使用纯JDK提供的类或接口来实现结果,而不是使用外部库。有什么帮助吗?

迭代对象。对于每个对象,从地图中获取其对应的列表。如果为空,则创建一个新列表并将其放入映射中。然后将该值添加到列表中


或者使用,这将为您完成此任务。

我将使用guavas
Multimap
实现。但使用标准JDK也很容易实现

标准JDK示例:
Map data=newhashmap();
data.put(“car”、Arrays.asList(“丰田”、“宝马”、“本田”);
data.put(“水果”,数组.asList(“苹果”,“香蕉”);
data.put(“计算机”、Arrays.asList(“宏碁”、“华硕”、“ibm”);

也许是这样的

Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
Map dataMap=newhashmap();
伪代码:

for (String key : keys) {
    if (!dataMap.containsKey(key)) {
        dataMap.put(key, new ArrayList<String>());
    }

    dataMap.get(key).add(getValue(key));
}
for(字符串键:键){
如果(!dataMap.containsKey(键)){
put(key,newarraylist());
}
get(key).add(getValue(key));
}

或者,使用番石榴。

下面的代码片段应该可以帮助您

HashMap map=newhashmap();
ArrayList carList=新的ArrayList();
carList.add(“丰田”);
carList.add(“宝马”);
卡利斯特加上(“本田”);
地图放置(“汽车”,卡利斯特);
ArrayList水果列表=新的ArrayList();
水果列表。添加(“苹果”);
水果列表。添加(“香蕉”);
地图。放置(“水果”,水果清单);
Map myMaps=new HashMap();
用于(数据对象项:myList){
如果(!myMaps.containsKey(item.getKey())){
myMaps.put(item.getKey(),newarraylist());
}
获取(item.getKey()).add(item.getValue());
}

您已经解释了它应该是什么样子(
Map
)。你的意思是如何实现它?此外,该数据存储在何处以及以何种格式存储?@adarshr,由于数据列表具有随机长度(可能有许多此类数据),我需要一种通用方法来构建地图结构。我不确定如何执行该操作该数据存储在何处/如何存储?CSV?数据库XML?JSON?@adarshr,正如我提到的,我已经将数据作为列表获取,每个数据对象代表一行,带有“key”和“value”字段。您可以使用Google Guava collection中的ListMultimap。@scarba05,我只举了一个数据的例子,并不意味着数据是这样的,实际上,数据是非常随机的,但格式是这样的。如果它和你的答案一样简单,我不会在这里问为了使用这个ListMultimap我应该下载什么外部库?呃。。。当然是番石榴。这就是为什么我说番石榴的列表地图。这对我来说是一个奇迹。非常感谢你!
{car=[toyota, bmw, honda], fruit=[apple, banana], computer=[acer, asus, ibm]}
Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
for (String key : keys) {
    if (!dataMap.containsKey(key)) {
        dataMap.put(key, new ArrayList<String>());
    }

    dataMap.get(key).add(getValue(key));
}
    Map<String, List<String>> myMaps = new HashMap<String, List<String>>();
    for (DataObject item : myList) {
        if (!myMaps.containsKey(item.getKey())) {
            myMaps.put(item.getKey(), new ArrayList<String>());
        }
        myMaps.get(item.getKey()).add(item.getValue());
    }