我有一個List,例如。 {貓,球,蝙蝠,杯子,添加,螞蟻},我試圖轉換成地圖與密鑰作爲列表的單詞中可用的第一個字符,並將值作爲列表中的相應單詞。列表到地圖,用鍵作爲第一個字母和值作爲第一個字母對應的關鍵字
即
A->添加,螞蟻
B->球,蝙蝠
C->貓,杯
的地圖輸出。如果我能得到一些指導,這將是很有幫助的。
我有一個List,例如。 {貓,球,蝙蝠,杯子,添加,螞蟻},我試圖轉換成地圖與密鑰作爲列表的單詞中可用的第一個字符,並將值作爲列表中的相應單詞。列表到地圖,用鍵作爲第一個字母和值作爲第一個字母對應的關鍵字
即
A->添加,螞蟻
B->球,蝙蝠
C->貓,杯
的地圖輸出。如果我能得到一些指導,這將是很有幫助的。
指導
使用Map<String, List<String>>
和substring(int, int)
方法
使用Map<Character, List<String>>
其中關鍵的是性格和價值是由該字符的所有單詞列表。
添加字符時,您必須重新註冊'A'和'a'是不同的關鍵。
爲了得到第一個字符
如果 'A' 和 'a' 視爲不同然後
鍵= <字符串> .charAt(0)
如果 'A'和'a'一樣對待
key = <字符串> .toUppe rCase()的charAt(0)
如果只有在列表中的話,以較低的情況下,開始這應該工作。
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;
}
爲什麼我們需要單詞[i] .toCharArray(),因爲我們只需要第一個字符就有一個名爲charAt(index)的函數。 –
沒有想到這一點,你是對的...我會編輯它 – htz
但仍然insted調用字[i] .charAt(0)再次您可以使用溫度字符。你能否使用2 for循環來計算你的代碼的複雜性?如果你移動map.put(「」+ words [i] .charAt(0),wordList);在for循環之外。 –
您可以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.
所有這些clases在谷歌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。
使用純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塔庫爾建議
只是想知道爲什麼你選擇鍵作爲字符串,因爲我們可以選擇字符作爲鍵 –
當然,字符也可以用作鍵,你是對的 – shevchyk
你嘗試什麼嗎?你有什麼問題? –
是否有任何以大寫字母開頭的單詞? – htz