0

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

IE

a->添加,蚂蚁

b->球,蝙蝠

c->猫,杯子

输出为地图。如果我能得到一些指导会很有帮助。

4

5 回答 5

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);
        }
    }

或更好的方式使用番石榴库作为 Aniket Thakur 建议

于 2013-07-23T07:08:03.607 回答
1

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

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

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

    键 = <字符串>.charAt(0)

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

    key = <String>.toUpperCase().charAt(0)

于 2013-07-23T05:45:30.293 回答
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.

所有这些类都在谷歌的番石榴库中。

例子

  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。

于 2013-07-23T05:57:49.743 回答
0

指导

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

于 2013-07-23T05:38:25.167 回答
-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;
    }
于 2013-07-23T05:54:57.477 回答