问题描述: 有一个字符串,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"

解决方案 »

  1.   

    import java.util.HashMap;
    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));
    }}
      

  2.   


    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);
    }
    }
    }
      

  3.   


    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));
    }
    }
      

  4.   

    看来java的数据结构要熟悉一下了。
      

  5.   

    因为hqch1314跟zhoupuyue的方法基本相同,而且hqch1314先贴出来,那么就给hqch1314多一些分数啊。