List to Map,键作为第一个字符,值作为与第一个字母键字符对应的单词

时间:2013-07-23 05:36:53

标签: java list map

我有一个名单,例如。 {cat,ball,bat,cup,add,ant},我试图将其转换为Map,其中key作为List中单词中可用的第一个字符,值为List中的相应单词。

A->添加,蚂蚁

B->球,球棒

C->猫,杯

输出为Map。如果我能得到一些指导,那会很有帮助。

5 个答案:

答案 0 :(得分:1)

使用
Map<Character, List<String>>
其中键是字符,值是该字符中所有单词的列表。

在添加字符时,您必须记住“A”和“a”是不同的键 获得第一个角色

  • 如果'A'和'a'被视为不同,那么

    key =&lt; String&gt; .charAt(0)

  • 如果'A'和'a'被视为相同

    key =&lt; String&gt; .toUpperCase()。charAt(0)

答案 1 :(得分:1)

使用纯Java:

List<String> words = 
    new ArrayList(Arrays.asList("cat", "ball", "bat", "cup", "add", "ant"));
    Map<String, List<String>> map = new HashMap();
    for(String word: words){
        String firstChar = String.valueOf(word.charAt(0));
        if (map.get(firstChar) == null){
            map.put(firstChar, new ArrayList(Arrays.asList(word)));
        }
        else{
            map.get(firstChar).add(word);
        }
    }

或更好的方式使用Guava库作为Aniket Thakur建议

答案 2 :(得分:0)

  

指导

使用Map<String, List<String>>substring(int, int)方法

答案 3 :(得分:0)

您可以use Map<String, List<String>>但我建议使用

Multimap : Keys need not be unique.But same key can have same values

更好的是

SetMultimap : Same as Multimap but no duplicate values for a given key. 
Duplicate keys are allowed.

所有这些条款都在谷歌guava library

实施例

  Multimap<String, String> myMultimap = ArrayListMultimap.create();

  // Adding some key/value
  myMultimap.put("a", "add");
  myMultimap.put("a", "ant");
  myMultimap.put("b", "ball");
  myMultimap.put("b", "bat");

请浏览我在上面提供的链接中的API。

答案 4 :(得分:-1)

如果列表中只有单词,则以小写字母开头,这应该有效。

public static Map<String, List<String>> arrayToList(String[] words) {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (int n = 97; n <= 122; n++) {
            ArrayList<String> wordList = new ArrayList<String>();
            for (int i = 0; i < words.length; i++) {
                if (words[i].charAt(0) == n) {
                    wordList.add(words[i]);
                    map.put("" + words[i].charAt(0), wordList);
                }
            }
        }
        return map;
    }