String str="中国    美国    日本 新加坡  10   12 20       13韩国10.0老挝134.0   加拉大1.0"
怎么把它对应起来 用map存 效果如:
 key=中国  value=10
 key=美国  value=12 
 key=日本 value=20  
 key=新加坡 value=13  
 key=韩国 value=10.0 
 key=老挝 value=134.0  
 key=加拉大 value=1.0
当字符串变的时候但方法不用改(数据一定是对应的)
先谢谢各位大虾了!

解决方案 »

  1.   

    直接用MAP啊,再把它循环输出来!
      

  2.   

    用split()把字符串转换成数组array.
    新建两个数据array1,array2
    遍历array中的每一个元素,如果可以转化成数字,添加到array2,否则添加到array1,
    然后分别取array1与array2对应下标的元素为一组做为map的一个key-value对.
      

  3.   

    把你的字符串变的有规律一点后,写了个不太好的东西public static void main(String args[]){
    String str = "中国,美国,日本,新加坡,10,12,20,13,韩国,10.0,老挝,134.0, 加拉大,1.0";
    String []s = str.split(",");
    Map map = new HashMap();
    List list = new ArrayList();
    List list1 = new ArrayList();
    List list2 = new ArrayList();


    for(int i=0;i<s.length;i++){
    list.add(s[i]);
    }

    for(int i=0;i<list.size();i++){
    if(containDig((String)list.get(i))){
    list1.add(list.get(i));
    }else{
    list2.add(list.get(i));
    }
    }

    if(list1.size() == list2.size() && list1.size()>0){
    for(int i=0;i<list1.size();i++){
    map.put(list2.get(i), list1.get(i));
    }
    }

    for(Object o:map.keySet()){
    System.out.println(o + "分数是:" + map.get(o));
    }
    }

    public static boolean containDig(String s){
    String pattern = "[0-9]+[.]?[0-9]*";
    if(s.matches(pattern)){
    return true;
    }else{
    return false;
    }
    }输入结果是:新加坡分数是:13
    日本分数是:20
     加拉大分数是:1.0
    韩国分数是:10.0
    老挝分数是:134.0
    美国分数是:12
    中国分数是:10
      

  4.   

    分析一下字符串,其实还是有些规律的,比如中文字符的 英国美国之类的不会黏在一起。所以用正则表达式做了下。
    public static void main(String[] args) {
    _3_8_regexTest test = new _3_8_regexTest();
    String str="中国 美国 日本 新加坡 10 12 20 13韩国10.0老挝134.0 加拉大1.0";
    String regex = "[\u4e00-\u9fa5]+";
    List<String> ls = test.getList(str, regex);
    regex = "-?[0-9]+(\\.[0-9]*)?";
    List<String> ls1 = test.getList(str, regex);
    Map<String,String> result = new HashMap<String,String>();
    if(ls.size() == ls1.size()) {
    for(int i=0;i<ls.size();i++) {
    result.put(ls.get(i), ls1.get(i));
    }
    }else {
    System.out.println("结果存在问题,请检查");
    return;
    }
    //结果测试
    for(Map.Entry<String, String> entry : result.entrySet()) {
    System.out.println("key:   " + entry.getKey() +"     value:   " +entry.getValue());
    }
    }

    public List<String> getList(String str,String regex) {
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    List<String> ls = new ArrayList<String>();
    while(m.find()) {
    ls.add(m.group());
    }
    return ls;
    }
      

  5.   


    空格是没有规律的,字符串是数据库里的不好改.还有这个字符串是会变的 但一定是 key  value