【Java语言】Java 字符替换效率比较
2012-09-13 12:49
274 查看
public static String encode(String str) { if(str == null) { return null; } str = str.replace('+', '~'); str = str.replace('/', '_'); str = str.replace('=', '.'); return str; } public static String encode2(String str) { if(str == null) { return null; } str = str.replace("+", "~"); str = str.replace("/", "_"); str = str.replace("=", "."); return str; } public static String encode3(String str) { if(str == null) { return null; } char[] array = str.toCharArray(); for (int i = 0, length = array.length; i < length; i++) { if(array[i] == '+') { array[i] = '~'; } else if(array[i] == '/') { array[i] = '_'; } else if(array[i] == '=') { array[i] = '.'; } } return new String(array); }
写了如上三个方法,3个方法都能达到字符替换的效果,但是效率不一样;第一种、第二种方式都是遍历三遍, 第三种遍历一遍;
测试字符串为:
String str = "asdasddasd+asd/asdadas======asdasd++++++++//===kkkklakdjfh";
执行1000000次,结果为:3031517061401
第三种数组的效率最高啊;
测试字符串为:String str = "asdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasd";
执行1000000次,结果为:
1169228741496
第一种replace的效率反而高了。
原因是replace方法会先去查找字符串中是否包含需要替换的字符,如果没有就直接返回了,有才会去遍历替换(下面是replace源码,有兴趣的可以看下); 所以当目标字符串中不包含需要替换的字符时,replace效率最高;
在日常开发中,就不要折腾了,直接调用replace来处理即可。
public String replace(char oldChar, char newChar) { if (oldChar != newChar) { int len = count; int i = -1; char[] val = value; /* avoid getfield opcode */ int off = offset; /* avoid getfield opcode */ while (++i < len) { if (val[off + i] == oldChar) { break; } } if (i < len) { char buf[] = new char[len]; for (int j = 0 ; j < i ; j++) { buf[j] = val[off+j]; } while (i < len) { char c = val[off + i]; buf[i] = (c == oldChar) ? newChar : c; i++; } return new String(0, len, buf); } } return this; }
相关文章推荐
- Java 字符替换效率比较
- Java 字符替换效率比较
- Java 字符替换效率比较
- java字符串特殊替换及无法比较字符问题
- 冒泡排序算法的C++,Java和Python实现和冒泡排序算法三种语言效率的比较
- java String常用操作以及比较用String与StringBuffer追加字符的执行效率【修订2】
- 比较java与c语言中数字转换成字符的不同
- Java字符串各种连接方式性能比较
- Java-替换字符串中的字符
- java语言基础之构造函数深入以及构造函数和构造代码块比较-作者:逝秋
- JAVA中int转String类型效率比较
- Java中替换字符串中特殊字符+ 20150921
- java数组复制的方式和效率比较
- java IO写入文件效率——几种方法比较
- java的三种写文件方法的效率性能比较
- NSString:创建,长度,取字符,是否以某字符串开头,结尾, 查找指定字符串的范围,截取,拼接,替换,比较,替换,数值转换,大小写转换
- 一个比较综合的Java语言基础试题
- java之String类--获取判断转换替换切割除空比较
- java判断字符串中某字符出现的位置,并替换指定指定内容
- Java进阶——使用正则表达式检索、替换String中的特定字符和关于正则表达式的一切