import java.util.StringTokenizer;

public class SplitDemo {
//jdk8
public static void main(String[] args){
String s = "a,b,c";
String[] split = s.split(",");
for (String s1 : split) {
System.out.println(s1);
}
StringTokenizer st = new StringTokenizer(s,",");
while (st.hasMoreTokens()){
String s1 = st.nextToken();
System.out.println(s1);
}
String s2 = "a,b,c";
while (true){
int i = s2.indexOf(",");
if (i < 0 && s2.length()<0){
break;
}
if (i < 0){
System.out.println(s2);
break;
}else {
System.out.println(s2.substring(0,i));
s2 = s2.substring(i+1);
}
} testSplit();
testStringTokenizer();
testIndexOf();
//split-598
//StringTokenizer-38
//indexOf-4577
}
public static void testSplit(){
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 1000; i++) {
sb.append(i);
if (i < 999){
sb.append(",");
}
}
String str = sb.toString();
long begin = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
str.split(",");
}
long end = System.currentTimeMillis();
System.out.println("split" + (end-begin));
}
public static void testStringTokenizer(){
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 1000; i++) {
sb.append(i);
if (i < 999){
sb.append(",");
}
}
String str = sb.toString();
long begin = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreTokens()){
st.nextToken();
}
st = new StringTokenizer(str);
}
long end = System.currentTimeMillis();
System.out.println("StringTokenizer" + (end-begin));
}
public static void testIndexOf(){
String s = null;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 1000; i++) {
sb.append(i);
if (i < 999){
sb.append(",");
}
}
s = sb.toString();
String str = s;
long begin = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
while (true){
int a = str.indexOf(",");
if (a < 0){
break;
}
str = str.substring(a+1);
}
str = s;
}
long end = System.currentTimeMillis();
System.out.println("indexOf" + (end-begin));
}
}

java--split,index,StringTokenizer比较的更多相关文章

  1. Java split方法源码分析

    Java split方法源码分析 public String[] split(CharSequence input [, int limit]) { int index = 0; // 指针 bool ...

  2. 关于split与StringTokenizer的理解

    关于split与StringTokenizer的理解 一.split    依据匹配给定的正則表達式来拆分此字符串.此方法返回的数组包括此字符串的子字符串,每一个子字符串都由还有一个匹配给定表达式的子 ...

  3. Java split用法

    Java split用法 java.lang.string.split split 方法  将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separat ...

  4. Java split(".") 和 split("\\.")

    Java split(".") 和 split("\\.") 问题描述 使用 . 分解 IP 的各个段,并打印,如:192.168.10.123,分解为 192 ...

  5. java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)

    最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...

  6. java字符串分解 StringTokenizer用法(比split()方法效率高)

    Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokenizer可以帮你. int countTokens ...

  7. Java学习笔记--StringTokenizer的使用

    拓展:Pattern.split替代String.split http://www.cnblogs.com/gnivor/p/4386978.html StringTokenizer是一个用来分隔St ...

  8. java split进行字符串分割

    在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用"."作为分隔的话,必须是如下写法,Str ...

  9. Java Split以竖线作为分隔符

    今天用到了Java中的Split函数,要以“|”作为分割符,当输入竖线时,发现出错,这个问题应该很久前就遇到过,不过太长时间就给忘了! 网上一搜,就找到了答案,这是因为split里面有两个参数,其中一 ...

随机推荐

  1. BZOJ4269 再见xor

    考前挣扎 线性基裸题 mx直接求 次大直接从低到高枚举第一个非0位 然后次大就是异或上就行了[显然贪心呐qwq 不到800b可还行 //Love and Freedom. #include<cs ...

  2. cornerNet部分学习内容记录

    cornerNet来源灵感是基于多人姿态估计的从下往上思想,预测角的热图,根据嵌入式向量对角进行分组,其主干网络也来自于姿态估计的环面网络. cornerNet的总体框架结构图如下:  CornerN ...

  3. "||" 在sql中有什么用

    双竖线表示字符串拼接 比如: 'abc' || 'cba' 结果: 'abccba'

  4. Lock之ReentrantLock及实现生产者消费者和死锁

    Lock是顶层接口,它的实现逻辑并未用到synchronized,而是利用了volatile的可见性.ReentrantLock对了Lock接口的实现主要依赖了Sync,而Sync继承了 Abstra ...

  5. Python3解leetcode Maximum SubarrayHouse Robber

    问题描述: You are a professional robber planning to rob houses along a street. Each house has a certain ...

  6. [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)

    题目描述 小$A$和小$B$在做游戏.他们找到了一个$n$行$m$列呈网格状的画板.小$A$拿出了$p$支不同颜色的画笔,开始在上面涂色.看到小$A$涂好的画板,小$B$觉得颜色太单调了,于是把画板擦 ...

  7. HTML 3-列表、表单、语义化

    有序列表.无序列表.自定义列表在语义上的区别 1.有序列表ol>li:列表有顺序编号(默认列表前加1.,2.,3.,...编号),适用于有逻辑顺序的排列项目,而且次序不能乱.2.无序列表ul&g ...

  8. 用 Flask 来写个轻博客 (27) — 使用 Flask-Cache 实现网页缓存加速

    目录 目录 前文列表 扩展阅读 Flask-Cache 应用 Flask-Cache 实现视图函数缓存 缓存无参数的普通函数 缓存带参数的普通函数 缓存无动态参数的视图函数 缓存带动态参数的视图函数 ...

  9. tesnsorflow 版本安装错了。 可以这样删除。

    conda env remove --name tensorflow tensorflow 版本安装错了. 可以这样删除. anaconda  安装tensorflow

  10. Python多进程编程-进程间协作(Queue、Lock、Semaphore、Event、Pipe)

    进程与进程之间是相互独立的,互不干扰.如果多进程之间需要对同一资源操作,就需要进程间共享变量,上一篇文章介绍了进程间共享数据的三大类Value.Array.Manager,这三种类的主要区别在于管理的 ...