我想转换一个包含两个字符串的表
到MAP<'String,ArrayList<'String>>
示例: 我得到一张这样的桌子
hello world
hi mom
hi doug
hello dad
我想在像这样的地图中转换它
hello, {world,dad,mom}
hi, {mom,doug}
非常感谢你的帮助:) 我很失望^^
答案 0 :(得分:3)
Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
// Loop through the table and assign the
// key/value to be checked and added to your map
...
if(map.containsKey(key))
{
map.get(key).add(value);
}
else
{
ArrayList<String> newValueList = new ArrayList<String>();
newValueList.add(value);
map.put(key, newValueList);
}
答案 1 :(得分:2)
初始化Map<String, List<String>>
,将其称为map
循环播放论坛的k
,v
条目并...
如果k
已经不是地图中的关键字,请将条目k
添加到包含v
的新列表
如果k
是关键字,请将v
添加到列表map.get(k)
答案 2 :(得分:0)
你需要的是这个;
class Test{
public static List<String> al1 = new ArrayList<String>();
public static HashMap<String, List<String>> ohm = new HashMap<String, List<String>>();
public static void main(String[] args){
String insertStr = "Hello";
ohm.put(insertStr, al1);
if(ohm.containsKey(insertStr )) // DO SOME OPERATIONS HERE
{
ohm.get(insertStr).add("MOM");
ohm.get(insertStr).add("World");
ohm.get(insertStr).add("DAD");
System.out.println(ohm.get(insertStr));
}
}
}
输出 [MOM,World,DAD]
如果有帮助,请告诉我,或者您有任何问题。
答案 3 :(得分:0)
package stackoverflow;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapExample
{
private static final String[] data = new String[] { "hello world", "hello dad", "hello mom", "hi mom", "hi doug" };
public static void main(String[] args)
{
Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
// Adjust the following as appropriate for actual data input and format
for(String s : data)
{
String[] splitData = s.split(" ");
String key = splitData[0];
String newValue = splitData[1];
List<String> values = dataMap.get(key);
if(values == null)
{
values = new ArrayList<>();
}
values.add(newValue);
dataMap.put(key, values);
}
for(String key : dataMap.keySet())
{
System.out.print(key + ", { ");
for(String value : dataMap.get(key))
{
System.out.print(value + " ");
}
System.out.println("}");
}
}
}
输出:
hello, { world dad mom }
hi, { mom doug }
答案 4 :(得分:0)
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class TableToMap {
private static String[] table = new String[] {"hello world", "hello mom", "hello dad"};
private static Map <String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
public static void main(String[] args) {
for (String row : table) {
String[] splitString = row.split(" ");
if (map.containsKey(splitString[0])) {
map.get(splitString[0]).add(splitString[1]);
}
else {
ArrayList<String> newList = new ArrayList<String>();
newList.add(splitString[1]);
map.put(splitString[0], newList);
}
}
}
}
答案 5 :(得分:0)
Java没有内置的多图功能,这就是你想要的。您可以创建一个自定义映射,当您添加一个键值集(如{"hello", "world"}
时,它会检查是否已经存在“hello”键。如果没有“hello”键,则它会添加一个新的{hello, List<String>}
,然后将“world”添加到映射列表中。否则,它只是将“world”添加到映射到“hello”的列表中。
您可以从以下网址阅读有关如何使用地图甚至如何获取mutlimap功能的更多信息:
http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html