我有一个名单,例如。 {cat,ball,bat,cup,add,ant},我试图将其转换为Map,其中key作为List中单词中可用的第一个字符,值为List中的相应单词。
即
A->添加,蚂蚁
B->球,球棒
C->猫,杯
输出为Map。如果我能得到一些指导,那会很有帮助。
答案 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;
}