Java 字符替换效率比较
2012-09-25 16:44
274 查看
http://blog.csdn.net/feng88724/article/details/7974355
[java] view
plaincopyprint?
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次,结果为:
3031
51706
1401
第三种数组的效率最高啊;
测试字符串为:
String str = "asdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasd";
执行1000000次,结果为:
1169
22874
1496
第一种replace的效率反而高了。
原因是replace方法会先去查找字符串中是否包含需要替换的字符,如果没有就直接返回了,有才会去遍历替换(下面是replace源码,有兴趣的可以看下); 所以当目标字符串中不包含需要替换的字符时,replace效率最高;
在日常开发中,就不要折腾了,直接调用replace来处理即可。
[java] view
plaincopyprint?
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] view
plaincopyprint?
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次,结果为:
3031
51706
1401
第三种数组的效率最高啊;
测试字符串为:
String str = "asdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasdasdasddasd";
执行1000000次,结果为:
1169
22874
1496
第一种replace的效率反而高了。
原因是replace方法会先去查找字符串中是否包含需要替换的字符,如果没有就直接返回了,有才会去遍历替换(下面是replace源码,有兴趣的可以看下); 所以当目标字符串中不包含需要替换的字符时,replace效率最高;
在日常开发中,就不要折腾了,直接调用replace来处理即可。
[java] view
plaincopyprint?
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 字符替换效率比较
- java String常用操作以及比较用String与StringBuffer追加字符的执行效率【修订2】
- java字符串特殊替换及无法比较字符问题
- JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串
- java的list几种实现方式的效率(ArrayList、LinkedList、Vector、Stack),以及 java时间戳的三种获取方式比较
- Java 正则表达式--字符串匹配、切割、与替换
- Java常用的通信协议效率比较(转)
- Java String提高比较效率
- Java中替换字符串中特殊字符+ 20150921
- Java对一维数组排序:冒泡,选择,插入,比较效率
- Java 基础 —— String中替换指定字符,字符种类判定,字符大小写转换,遍历字符串
- java中用equals比较两个内容相同的字符数组
- [Java]String和StringBuffer连接字串的效率比较
- Java中替换文本中指定字符
- Java字符串各种连接方式性能比较
- C/C++/Perl/汇编/Java效率比较
- java map对象的效率比较
- java代码如何替换字符