字符串转换?急 1 A,1 B,2 A,2 B,2 C转换为1 AB,2 ABC 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 随便写了个 可以自己改改! Map map = new HashMap(); String str = "1 A,1 B,2 A,2 B,2 C"; String strs[] = str.split(","); for (int i = 0; i < strs.length; i++) { strs[i].split(" "); if(map.containsKey(strs[i].split(" ")[0])){ map.put(strs[i].split(" ")[0],map.get(strs[i].split(" ")[0]) + strs[i].split(" ")[1]); }else{ map.put(strs[i].split(" ")[0], strs[i].split(" ")[0] + " " + strs[i].split(" ")[1]); } } for (Object key : map.keySet()) { System.out.println(map.get(key)); } package work.helper;import java.util.HashMap;import java.util.Map;public class Test { public static void main(String[] args) { String s="1 A,1 B,2 A,2 B,2 C"; String result=""; String[] str=s.split(","); Map<String,String> map=new HashMap<String,String>(); for(int i=0;i<str.length;i++){ String[] ss=str[i].split(" "); if(map.get(ss[0])==null){ map.put(ss[0],ss[1] ); }else{ String key=ss[0]; String value=map.get(ss[0]); value+=ss[1]; map.remove(ss[0]); map.put(ss[0], value); } } for(Object o:map.keySet()){ result+=o+" "+map.get(o)+","; } System.out.println(result); result=result.substring(0, result.length()-1); System.out.println(result); }}结果2 ABC,1 AB我在考虑改改输出顺序 排序的话 就将键设置为Integer 然后将所有键弄成一个数组 数组排序 ok! 代码懒的写 package com.vingsoft.ggzyjyjc.vo;import java.util.HashMap;import java.util.Map;import java.util.TreeMap;public class Test { public static void main(String[] args) { String source="1 A,1 B,2 A,2 B,2 C,3 E,3 D"; Map<String,String> map=new HashMap<String, String>(); String result=""; for(String string:source.split(",")){ String[] reg=string.split(" "); map.put(reg[0],map.containsKey(reg[0])?map.get(reg[0])+reg[1]:reg[1]); } for(Object key:new TreeMap(map).keySet()) result+=(key+map.get(key)+","); System.out.println(result); }}我用的treemap自己排了一下,也可以自定义排序,但总觉得很繁琐,看楼下怎么说 package work.helper;import java.util.HashMap;import java.util.Map;public class Test { public static void main(String[] args) { String s="1 A,1 B,2 A,2 B,2 C"; String result=""; String[] str=s.split(","); Map<String,String> map=new HashMap<String,String>(); for(int i=0;i<str.length;i++){ String[] ss=str[i].split(" "); if(map.get(ss[0])==null){ map.put(ss[0],ss[1] ); }else{ String key=ss[0]; String value=map.get(ss[0]); value+=ss[1]; map.remove(ss[0]); map.put(ss[0], value); } } for(int i=0;i<5;i++){ if(map.get(Integer.toString(i))!=null){ result=result+i+" "; result+=map.get(Integer.toString(i)); result=result+","; } } result=result.substring(0, result.length()-1); System.out.println(result); }}稍微改了一下,记得那个i值调到字符串里面最大的那个值就行了结果:1 AB,2 ABC 这个for循环语句怎么理解? 递归输出数字金字塔(求更简单代码) 求前辈设计一下表 工作中hibernate用表反射生成映射文件那注解怎么办???? eclipse 运行servlet 出现错误,请大家帮帮我这个初学者 哪位好心人帮偶写个schema片断吧。 代码改错,关键代码如下十几行,修改括号中的条件. 那里可以找到struts-legacy.jar这个包????? tomcat-5.0.28+j2sdk1.4.2_05 session保存在哪里啊 准备自学JAVA ,希望前辈推荐书! EXTJS+Struts2异常处理怎么做
String str = "1 A,1 B,2 A,2 B,2 C";
String strs[] = str.split(",");
for (int i = 0; i < strs.length; i++) {
strs[i].split(" ");
if(map.containsKey(strs[i].split(" ")[0])){
map.put(strs[i].split(" ")[0],map.get(strs[i].split(" ")[0]) + strs[i].split(" ")[1]);
}else{
map.put(strs[i].split(" ")[0], strs[i].split(" ")[0] + " " + strs[i].split(" ")[1]);
}
}
for (Object key : map.keySet()) {
System.out.println(map.get(key));
}
package work.helper;import java.util.HashMap;
import java.util.Map;public class Test {
public static void main(String[] args) {
String s="1 A,1 B,2 A,2 B,2 C";
String result="";
String[] str=s.split(",");
Map<String,String> map=new HashMap<String,String>();
for(int i=0;i<str.length;i++){
String[] ss=str[i].split(" ");
if(map.get(ss[0])==null){
map.put(ss[0],ss[1] );
}else{
String key=ss[0];
String value=map.get(ss[0]);
value+=ss[1];
map.remove(ss[0]);
map.put(ss[0], value);
}
}
for(Object o:map.keySet()){
result+=o+" "+map.get(o)+",";
}
System.out.println(result);
result=result.substring(0, result.length()-1);
System.out.println(result);
}
}
结果2 ABC,1 AB
我在考虑改改输出顺序
import java.util.Map;
import java.util.TreeMap;public class Test {
public static void main(String[] args) {
String source="1 A,1 B,2 A,2 B,2 C,3 E,3 D";
Map<String,String> map=new HashMap<String, String>();
String result="";
for(String string:source.split(",")){
String[] reg=string.split(" ");
map.put(reg[0],map.containsKey(reg[0])?map.get(reg[0])+reg[1]:reg[1]);
}
for(Object key:new TreeMap(map).keySet())
result+=(key+map.get(key)+",");
System.out.println(result);
}
}
我用的treemap自己排了一下,也可以自定义排序,但总觉得很繁琐,看楼下怎么说
package work.helper;import java.util.HashMap;
import java.util.Map;public class Test {
public static void main(String[] args) {
String s="1 A,1 B,2 A,2 B,2 C";
String result="";
String[] str=s.split(",");
Map<String,String> map=new HashMap<String,String>();
for(int i=0;i<str.length;i++){
String[] ss=str[i].split(" ");
if(map.get(ss[0])==null){
map.put(ss[0],ss[1] );
}else{
String key=ss[0];
String value=map.get(ss[0]);
value+=ss[1];
map.remove(ss[0]);
map.put(ss[0], value);
}
}
for(int i=0;i<5;i++){
if(map.get(Integer.toString(i))!=null){
result=result+i+" ";
result+=map.get(Integer.toString(i));
result=result+",";
}
}
result=result.substring(0, result.length()-1);
System.out.println(result);
}
}
稍微改了一下,记得那个i值调到字符串里面最大的那个值就行了
结果:1 AB,2 ABC