问题描述: 有一个字符串,ps = "A-12,A1-13,A5-15,A8-18,B1-10,B4-12,B9-13,D-5,E-6",由字母和数字组成。
"-"前边的字母用于区分类型,"-"后边的数字表示值。
要求: 相同字母的值相加(即A,A1,A5,A8"-"后边的数字相加,B1,B4,B9"-"后边的数字相加)。最好用java。
结果为: ps = "A-58,B-35,D-5,E-6"
"-"前边的字母用于区分类型,"-"后边的数字表示值。
要求: 相同字母的值相加(即A,A1,A5,A8"-"后边的数字相加,B1,B4,B9"-"后边的数字相加)。最好用java。
结果为: ps = "A-58,B-35,D-5,E-6"
import java.util.Iterator;
import java.util.Map;
public class Demo34 { public String addValue(String str){
Map<String,Integer> maps = new HashMap<String,Integer>();
Map<String,Integer> result = new HashMap<String,Integer>();
String[] s1 = str.split(",");
for(int i = 0;i<s1.length;i++){
String[] s2 = s1[i].split("-");
maps.put(s2[0], Integer.parseInt(s2[1]));
}
Iterator iterator = maps.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry=(Map.Entry)iterator.next();
String key = (String) entry.getKey();
int value = (Integer) entry.getValue();
String resultKey = key.substring(0,1);
if(result.get(resultKey) == null){
result.put(resultKey, value);
}else {
int newValue = result.get(resultKey) +value;
result.put(resultKey, newValue);
}
}
return getString(result);
}
/**
* 把传来的MAP转换成String
* @param map
* @return
*/
public String getString(Map<String,Integer> map){
Iterator iterator = map.entrySet().iterator();
StringBuffer sb = new StringBuffer();
while(iterator.hasNext()){
Map.Entry entry=(Map.Entry)iterator.next();
String key = (String) entry.getKey();
int value = (Integer) entry.getValue();
sb.append(key).append("-").append(value).append(",");
}
return sb.toString().substring(0, sb.toString().length()-1); //去除最后一个逗号
} public static void main(String[] args) {
Demo34 demo = new Demo34();
String str = "A-12,A1-13,A5-15,A8-18,B1-10,B4-12,B9-13,D-5,E-6";
System.out.println(demo.addValue(str));
}}
package test;import java.text.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Test { public static void main(String[] args) {
String s = "A-12,A1-13,A5-15,A8-18,B1-10,B4-12,B9-13,D-5,E-6";
String[] items = s.split(",");
Map<String,Integer> map = new HashMap<String,Integer>();
for(String ss:items){
String[] temp = ss.split("-");
if(map.get(temp[0].substring(0,1))==null){
map.put(temp[0].substring(0,1), Integer.valueOf(temp[1]));
}else{
map.put(temp[0].substring(0,1), map.get(temp[0].substring(0,1))+Integer.valueOf(temp[1]));
}
}
Set<Map.Entry<String, Integer>> set = map.entrySet();
Iterator<Map.Entry<String,Integer>> iterate = set.iterator();
List<String> list = new ArrayList<String>();
while(iterate.hasNext()){
Map.Entry<String,Integer> entry = iterate.next();
list.add(entry.getKey()+"-"+entry.getValue());
}
Collections.sort(list);
for(String ss:list){
System.out.println(ss);
}
}
}
package test;import java.text.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Test { public static void main(String[] args) {
String s = "A-12,A1-13,A5-15,A8-18,B1-10,B4-12,B9-13,D-5,E-6";
String[] items = s.split(",");
Map<String,Integer> map = new HashMap<String,Integer>();
for(String ss:items){
String[] temp = ss.split("-");
if(map.get(temp[0].substring(0,1))==null){
map.put(temp[0].substring(0,1), Integer.valueOf(temp[1]));
}else{
map.put(temp[0].substring(0,1), map.get(temp[0].substring(0,1))+Integer.valueOf(temp[1]));
}
}
Set<Map.Entry<String, Integer>> set = map.entrySet();
Iterator<Map.Entry<String,Integer>> iterate = set.iterator();
List<String> list = new ArrayList<String>();
while(iterate.hasNext()){
Map.Entry<String,Integer> entry = iterate.next();
list.add(entry.getKey()+"-"+entry.getValue()+",");
}
Collections.sort(list);
StringBuilder sb = new StringBuilder();
for(String ss:list){
sb.append(ss);
}
System.out.println(sb.toString().substring(0,sb.length()-1));
}
}