我的应用程序有点困难,我不太清楚要搜索什么。所以我希望有人可以帮助我。
我有一个String
的列表,如下所示:
Cake;carrot
Cake;apple
Cake;spicy
Pizza;pepperoni
Pizza;mozzarella
......等等。我想将此数据放入Map<String, List<String>>
,其中Cake
和Pizza
将构成我Map
中的密钥。将[carrot, apple, spicy]
作为Cake
的值,将[pepperoni, mozzarella]
作为Pizza
的值。
我怎么能实现这个目标?提前感谢您的帮助。
答案 0 :(得分:3)
使用String.split()
ArrayList<String> myList;
HashMap<String, List<String>> myMap = new HashMap<>();
for(String s : myList)
{
String[] split = s.split(";");
List<String> bucket = myMap.get(split[0]);
if(bucket == null)
{
bucket = new ArrayList<String>();
myMap.put(split[0], bucket);
}
bucket.add(split[1]);
}
答案 1 :(得分:0)
你可以尝试这个,使用一个hashmap,用(空格)存储连续的字符串作为分隔符,最后在你希望它作为列表时分割字符串
//Assuming your list to be the variable 'list'
HashMap<String,String> hm = new HashMap<>();
for(val : list){
String st[] = val.split(";");
if(hm.get(st[0])==null){
hm.put(st[0],st[1]);
}
else{
hm.put(st[0],hm.get(st[0])+" "+st[1]);
}
}
当你想要那个字符串数组pizza
时
String pizz[] = (hm.get("pizza")).split(" ");
pizz[]
会有你的阵容,欢呼!
答案 2 :(得分:0)
public static void main(String[] args) {
List<String> data = new ArrayList<String>();
Map<String, List<String>> finalData = new HashMap<String,List<String>>();
data.add("Cake;carrot");
data.add("Cake;apple");
data.add("Cake;spicy");
data.add("Pizza;pepperoni");
data.add("Pizza;mozzarella");
for (String dataString : data) {
List<String> temp = null;
if (finalData.get(dataString.split(";")[0]) == null) {
temp = new ArrayList<String>();
temp.add(dataString.split(";")[1]);
finalData.put(dataString.split(";")[0], temp);
} else {
temp = finalData.get(dataString.split(";")[0]);
temp.add(dataString.split(";")[1]);
finalData.put(dataString.split(";")[0], temp);
}
}
System.out.println(new Gson().toJson(finalData));
}
完整的工作解决方案。