java中字符串切割的方法总结
StringTokenizer最快 ,基本已经不用了,除非在某些需要效率的场合。
Scanner最慢。
String和Pattern速度差不多。Pattern稍快些。 String和Pattern的split 方法效率相当,常用
- public static void main(String [] args){
- long start = System.currentTimeMillis();
- for ( int i= 0 ;i< 100000 ;i++){
- test1();
- }
- long end = System.currentTimeMillis();
- System.out.println("StringTokenzier: " +(end-start));
- start = System.currentTimeMillis();
- for ( int i= 0 ;i< 100000 ;i++){
- test2();
- }
- end = System.currentTimeMillis();
- System.out.println("Scanner: " +(end-start));
- start = System.currentTimeMillis();
- for ( int i= 0 ;i< 100000 ;i++){
- test3();
- }
- end = System.currentTimeMillis();
- System.out.println("String: " +(end-start));
- start = System.currentTimeMillis();
- for ( int i= 0 ;i< 100000 ;i++){
- test4();
- }
- end = System.currentTimeMillis();
- System.out.println("Pattern: " +(end-start));
- }
- //用StringTokenizer
- public static void test1(){
- String input = "This is 1 just a test" ;
- StringTokenizer st = new StringTokenizer(input);
- while (st.hasMoreTokens()){
- String s = st.nextToken();
- }
- }
- //用Scanner的方法
- public static void test2(){
- String input = "This is 1 just a test" ;
- Scanner scanner = new Scanner(input);
- scanner.useDelimiter(" " );
- while (scanner.hasNext()){
- String s = scanner.next();
- }
- }
- //用String的split方法
- public static void test3(){
- String input = "This is 1 just a test" ;
- String [] str = input.split(" " );
- for ( int i= 0 ;i<str.length;i++){
- String s = str[i];
- }
- }
- //用Pattern的方法
- public static void test4(){
- Pattern pattern = Pattern.compile(" " );
- String input = "This is 1 just a test" ;
- String [] str = pattern.split(input);
- for ( int i= 0 ;i<str.length;i++){
- String s = str[i];
- }
- }
- public static void main(String [] args){
- long start = System.currentTimeMillis();
- for(int i=0;i<100000;i++){
- test1();
- }
- long end = System.currentTimeMillis();
- System.out.println("StringTokenzier: "+(end-start));
- start = System.currentTimeMillis();
- for(int i=0;i<100000;i++){
- test2();
- }
- end = System.currentTimeMillis();
- System.out.println("Scanner: "+(end-start));
- start = System.currentTimeMillis();
- for(int i=0;i<100000;i++){
- test3();
- }
- end = System.currentTimeMillis();
- System.out.println("String: "+(end-start));
- start = System.currentTimeMillis();
- for(int i=0;i<100000;i++){
- test4();
- }
- end = System.currentTimeMillis();
- System.out.println("Pattern: "+(end-start));
- }
- //用StringTokenizer
- public static void test1(){
- String input = "This is 1 just a test";
- StringTokenizer st = new StringTokenizer(input);
- while(st.hasMoreTokens()){
- String s = st.nextToken();
- }
- }
- //用Scanner的方法
- public static void test2(){
- String input = "This is 1 just a test";
- Scanner scanner = new Scanner(input);
- scanner.useDelimiter(" ");
- while(scanner.hasNext()){
- String s = scanner.next();
- }
- }
- //用String的split方法
- public static void test3(){
- String input = "This is 1 just a test";
- String [] str = input.split(" ");
- for(int i=0;i<str.length;i++){
- String s = str[i];
- }
- }
- //用Pattern的方法
- public static void test4(){
- Pattern pattern = Pattern.compile(" ");
- String input = "This is 1 just a test";
- String [] str = pattern.split(input);
- for(int i=0;i<str.length;i++){
- String s = str[i];
- }
- }
运行了五次。输出结果如下:
- StringTokenzier: 110
- Scanner: 3281
- String: 453
- Pattern: 438
- StringTokenzier: 109
- Scanner: 3297
- String: 453
- Pattern: 438
- StringTokenzier: 110
- Scanner: 3265
- String: 485
- Pattern: 437
- StringTokenzier: 109
- Scanner: 3266
- String: 469
- Pattern: 437
- StringTokenzier: 109
- Scanner: 3297
- String: 469
- Pattern: 422
- StringTokenzier: 110
- Scanner: 3281
- String: 453
- Pattern: 438
- StringTokenzier: 109
- Scanner: 3297
- String: 453
- Pattern: 438
- StringTokenzier: 110
- Scanner: 3265
- String: 485
- Pattern: 437
- StringTokenzier: 109
- Scanner: 3266
- String: 469
- Pattern: 437
- StringTokenzier: 109
- Scanner: 3297
- String: 469
- Pattern: 422
StringTokenizer最快
Scanner最慢。
String和Pattern速度差不多。Pattern稍快些。
java中字符串切割的方法总结的更多相关文章
- 【转】Java中字符串中子串的查找共有四种方法(indexof())
原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...
- Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...
- Java中字符串的一些常见方法
1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...
- Java中字符串indexof() 的使用方法
Java中字符串中子串的查找共有四种方法(indexof())indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1.如果 startind ...
- 三张图彻底了解Java中字符串的不变性
转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...
- java中字符串String 转 int(转)
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
- java中substring的使用方法
java中substring的使用方法 str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str ...
- [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较
java中清空StringBuffer的方法,我能想到的有4种: 1. buffer.setLength(0); 设置长度为0 2. buffer.delete(0, buffer.length() ...
- Java中字符串string的数据类型
Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...
随机推荐
- ECshop网店系统百万级商品量性能优化-简单的一些Cache内存配置
ECshop网店系统对于产品的数据.模板.Query都可以缓存,也就是把一些商品详情页.分类页.Search页的数据经过一次访问后,用文件的形式保存下来,下次有人访问相同的页面时,不用再查数据库,直接 ...
- 【pyhton】【转】修改递归次数
import sys sys.setrecursionlimit(1500) # set the maximum depth as 1500 def recursion(n): if(n <= ...
- ORA-24010 SMG-3000
参考:http://t.askmaclean.com/thread-528-1-1.html 运行脚本的时候一定要清楚脚本做了什么操作,注意看清脚本的报错. conn / as sysdba@?/rd ...
- 网络设备作用和工作ISO层
物理层——中继器和集线器 二者都起数字信号放大和中转的作用. 中继器 Repeater 用来延长网络距离的互连设备.REPEATER可以增强线路上衰减的信号,它两端即可以连接相同的传输媒体,也可以连接 ...
- ubuntu 12.04 安装 nginx+php+mysql web服务器
Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...
- iOS 日历类(NSCalendar)
对于时间的操作在开发中很常见,但有时候我们需要获取到一年后的时间,或者一周后的时间.靠通过秒数计算是不行的.那就牵扯到另外一个日历类(NSCalendar).下面先简单看一下 NSDate let d ...
- iOS最新上线流程+续费 2015-7-20更新
一.程序上线前准备 确认图标是否⻬全,应⽤的icon图标 在以前图⽚片直接命名 为icon就可以了,在xcode5以后,苹果加 ⼊入了images.xcasset这个⽂文件夹,所有的 图标全都在这⾥里 ...
- Emule使用Upnp,解决Lowid和port not reachable的问题
路由器上钩选开启Upnp Emule->选择->扩展选项->Upnp, 服务器:[从URL更新]http://upd.emule-security.org/server.met
- centos 下 yum 安装 nginx 平滑切换安装到 Tengine
---恢复内容开始--- 据说淘宝的Tengine很牛X,所以我们今天也来玩玩,我们这里是某开放云的vps,现在已经安装好了nginx,现在我们要平滑切换到安装Tengine. 下载Tengine,解 ...
- Linux fdisk 命令
Linux fdisk 命令 fdisk fdisk功能说明:磁盘分区.语 法:fdisk [-b <分区大小>][-uv][外围设备代号] ...