Java将两个字符串的表转换为MAP <string,arraylist <string =“”>&gt; </string,>

时间:2013-08-01 16:37:49

标签: java

我想转换一个包含两个字符串的表

到MAP&lt;'String,ArrayList&lt;'String&gt;&gt;

示例: 我得到一张这样的桌子

hello world 
hi mom 
hi doug 
hello dad    

我想在像这样的地图中转换它

hello, {world,dad,mom}
hi, {mom,doug} 

非常感谢你的帮助:) 我很失望^^

6 个答案:

答案 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

  • 循环播放论坛的kv条目并...

    • 如果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