java代码题 求java大神解答!必有高分 有追加哦

String S的内容如下:
“语音类,视频类|callandvideo;短信类,彩信类|MSM;数据类|data;中继类,WLAN,互联网业务,其他|rests”
分析该String ,要求如下:
以分号分隔为一组数据 ,每组数据以”|”分隔,竖线前的数据为逗号分隔的Key, 竖线后的数据为value。分析结果保存在hashmap中,并遍历该hashmap,在控制台输出其中的key和value。
输出的形式如下:
语音类 => callandvideo
视频类 => callandvideo
短信类 => MSM
… …
请编写该处理代码

public static void main(String[] args) {
// TODO Auto-generated method stub
String str="语音类,视频类|callandvideo;短信类,彩信类|MSM;数据类|data;中继类,WLAN,互联网业务,其他|rests";
Map map=new HashMap();
//List<String> names=new ArrayList();
Set<String> names=new HashSet();
String[] temp1=str.split(";");
for(String temp:temp1){
String[] temp2=temp.split("\\|");
String[] temp3=temp2[0].split(",");
for(String name:temp3){
map.put(name, temp2[1]);

}
}
names= map.keySet();
for(String n:names){
System.out.println(n+" ==> "+ map.get(n));
}

}追问

根本没有看明白

追答

这代码是我刚写的,是可以正确运行的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-26
map m = new hashmap();
String[] a = s.split(";"); //这是每组的数据
for(int i=0;i<a.length;i++){
String[] b = a[i].split("|"); //将key和value分开.
String[] c = b[0].split(","); //将key分开
if(c.length>0){
m.put(c[0],b[1]);
} //就大概照这么存,判断自己想下吧
}追问

能在写详细一点么!谢谢了!

追答

.....
map m = new hashmap();
String[] a = s.split(";"); //这是每组的数据
for(int i=0;i0){
m.put(c[0],b[1]);
if(c.length>1){
m.put(c[1],b[1]);
}
} //望采纳,任务中..
}

追问

跟上面的代码一样 根本没有什么改变!

追答

本来就这么点.只是没输出了.

第2个回答  2012-07-26
用.split拆分,存放到map集合中
第3个回答  2012-07-26
Map map = new HashMap();
String[] groups = s.split(";");
for(String group : groups){
String[] keyValue = group.split("|");
String[] keys = keyValue[0].split(",");
for(String key : keys){
map.put(key,keyValue[1]);
}
}
Iterator<String> it = map.keySet().iterator();
while(it.hasNext()){
String keyy= it.next();
System.out.println(key+" => "+map.get(keyy));
}
}
第4个回答  2012-07-26
String[] s1 = s.split("//");

List<HashMap> maps = new ArrayList<HashMap>();
for(int i=0;i<s1.length;i++){
Map m = new HashMap();
String key = "";
String value="";
if(i为双数){
key = s1[i]
}else{
value=s1[i]
}
m.put(key,value);

maps.add(m);

}

//输出
for(int i=0;i<maps.size();i++){
HashMap m = new HashMap();
m=maps.get(i);
system.out.println(m);
}
第5个回答  2012-07-26
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapTest {
public static void main(String[] args)
{
String str = "语音类,视频类|callandvideo;短信类,彩信类|MSM;数据类|data;中继类,WLAN,互联网业务,其他|rests";
Map<String, String> map = new HashMap<String, String>();

//第一步,先使用分号分割
String[] step1 = str.split(";");
for(int i = 0; i < step1.length; i++)
{
//第二步,step1中每个元素再通过竖线分割
String[] step2 = step1[i].split("\\|");
if(step2.length < 2)
continue;

String value = step2[1];
//第三步,将step2[0]通过逗号分割得到KEY
String[] step3 = step2[0].split(",");

//最后,写入hash表
for(int j = 0; j < step3.length; j++)
map.put(step3[j], value);
}

//打印HASH表内容
Set<Map.Entry<String, String> > set = map.entrySet();
Map.Entry<String, String> entry;
for(Iterator<Map.Entry<String, String> > it = set.iterator(); it.hasNext();)
{
entry = it.next();
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}