String tmpParam = "";
for(String key : map.keySet()){
tmpParam += ("&" + key + "=" + URLEncoder.encode(map.get(key)));
}
tmpParam = tmpParam.substring(1);//去掉最前端的&

String strUrl = "http://" + host + ":8080/smsControl/"
+ action
+ ".action?"
+ tmpParam;
这是我写的代码,目的是拼一个URL出来,参数放在map里了高手们都说说这几行代码的优化算法吧,大家讨论一下

解决方案 »

  1.   

    +还是少用一些吧,用stringbuilder的append方法
      

  2.   

    String tmpParam = "";   必须改为StringBuilder....
    相当的影响性能。。如果map中数据太多,可以考虑entrySet()
    public class Test02 {
    public static void main(String[] args) {
    final int count = 100000;
    long time01 = System.currentTimeMillis();
    String s = "";
    for (int i = 0; i < count; i++) {
    s += 'a';
    }
    long time02 = System.currentTimeMillis();
    System.out.println("String:" + (time02 - time01) + "ms");


    long time03 = System.currentTimeMillis();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < count; i++) {
    sb.append('a');
    }
    long time04 = System.currentTimeMillis();
    System.out.println("StringBuilder:" + (time04 - time03) + "ms");
    }
    }
    执行结果:
    String:5063ms
    StringBuilder:0ms
      

  3.   

    遍历map的时候可以遍历entrySet,直接就能得到key和value,这样的效率要遍历keySet然后再通过key获取value要高。
      

  4.   

    JDK1.5以上已经优化String连加操作为StringBuffer,此处不需要优化。
      

  5.   

    StringBuffer 和 entrySet 吧~
      

  6.   


    你说错了...简单的拼接是优化过的...
    比如String a = "a" + "B" + "c";但是循环中的优化,呵呵...可以反编译一下..
    是一次循环创建一个StringBuffer.....
      

  7.   


    不好意思,是我错了。没仔细看是在循环中的...确实需要StringBuffer优化~~