比 StringTokenizer 愈加优化的字符串切割ITeye - 凯发娱乐

比 StringTokenizer 愈加优化的字符串切割ITeye

2019-01-13 13:11:24 | 作者: 旭尧 | 标签: 办法,字符串,运用 | 浏览: 2588


  上篇文中提到,StringTokenizer 是相对比较快的字符切开办法,split和正则表达式 是java 主张的运用办法,subString 在原始字符串很大,切开操作又被高频运用的状况下很简单呈现 内存溢出的状况。可是 substring 的确履行的很快,字符串操作中 还有其他办法比方 indexOf 履行的也十分高效,咱们是不是能够自己组合,运用高效办法一起防止内存溢出。实例代码依然选用 前一篇文中的代码。




 
package String;
import java.util.StringTokenizer;
public class StringTokenizerDemo {
 public static void main(String[] args) {
 StringBuffer sb = new StringBuffer();
 for(int i=0;i 10000;i++){
 sb.append(i);
 sb.append(";");
 long begin = System.currentTimeMillis();
// StringTokenizerDemo.split(sb.toString());// 15665
 StringTokenizerDemo.token(sb.toString());//6679
 System.out.println(System.currentTimeMillis()-begin);
 public static void split(String str){
 for(int i=0;i 10000;i++){
 str.split(";");
 public static void token(String str){
 StringTokenizer st = new StringTokenizer(str,";");
 for(int i=0;i 10000;i++){
 while(st.hasMoreTokens()){
 st.nextToken();
 


上面这段代码,运用原始的 split办法  耗时 15665, 运用StringTokenizer 耗时 多会集在 58,假如处理妥当,咱们能够试试 咱们自己的组合办法(index和substirng) 看下面代码。



package String;
import java.util.StringTokenizer;
public class StringTokenizerDemo {
 public static void main(String[] args) {
 StringBuffer sb = new StringBuffer();
 for(int i=0;i 10000;i++){
 sb.append("sb-"+i);
 sb.append(";");
 long begin = System.currentTimeMillis();
// StringTokenizerDemo.split(sb.toString());// 15665
 StringTokenizerDemo.token(sb.toString());//58
// StringTokenizerDemo.indexSubstring(sb.toString());//56
 System.out.println(System.currentTimeMillis()-begin);
 public static void indexSubstring(String str){
 for(int i=0;i 10000;i++){
 while(true){
 int index = str.indexOf(";");
 if(index 0)
 break;
 System.out.println(str.substring(0, index));
 str = str.substring(index+1);
 public static void split(String str){
 for(int i=0;i 10000;i++){
 System.out.println(str.split(";")[i]);
 public static void token(String str){
 StringTokenizer st = new StringTokenizer(str,";");
 for(int i=0;i 10000;i++){
 while(st.hasMoreTokens()){
 System.out.println(st.nextToken());                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章