日期:2014-05-20  浏览次数:20778 次

简单的几行代码,大家说说优化思路
Java code

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里了

高手们都说说这几行代码的优化算法吧,大家讨论一下

------解决方案--------------------
String tmpParam = ""; 必须改为StringBuilder....
相当的影响性能。。

如果map中数据太多,可以考虑entrySet()

Java code

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

------解决方案--------------------
探讨

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