- 浏览: 460100 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
上篇文中说到,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()); } } } }
多执行几次,你会发现 组合使用的方法 甚至比 StringTokenizer 还要快,多集中在 55-56,组合方式 避免了内存溢出 和 空间浪费,是高频调用的良方。
发表评论
-
Java高效读取大文件
2015-01-22 19:45 6201、概述 本教程将演示如何用Java高效地读取大文件。 ... -
winSCP 服务器 在线联网
2015-01-09 18:05 7051 新建 bb.bat 文件 里面是你的服务器 列表 ... -
JDK 命令行工具
2014-10-22 14:47 797JDK 命令行工具 实现在tools.jar文件 ... -
windows 监控工具
2014-10-22 11:23 5301 windows 监控工具 运行-perfmon ... -
Amino 框架简介
2014-10-17 11:30 1425对数据加锁是实现多线程的一种策略,但是加锁无疑会增加系 ... -
Java 重入锁(ReentrantLock)和内部锁(synchronized)
2014-10-16 15:44 1591ReentrantLock 和 synchronize的 ... -
Java 锁分离
2014-10-16 15:35 1331读写锁思想的延伸就是锁分离。读写锁根据读写操作功能上 ... -
java 高性能运算-- 双端队列
2014-10-15 16:04 1042JDK 1.6中 提供了一种双端队列,简称 Dequ ... -
java 高性能运算--并发队列
2014-10-15 15:33 2486JDK 提供了两套并发队列的实现,一个是以 Conc ... -
java 高性能运算--量化线程池的大小
2014-10-15 11:42 1317线程池合理的长度取决于将要提交的任务类型和所部署系统的 ... -
java 高性能运算--展开循环
2014-10-14 15:43 1219可以优化的地方实在是太多了,只要你愿意去想,去尝试。代码 ... -
java 高性能运算--switch 替代方案
2014-10-14 15:24 1633Java 原生的语法糖中存在很多种 易于阅读,效率略低的 ... -
java 高性能运算--位运算代替乘除法
2014-10-14 15:03 3947位运算 是公认的 高效运算,在高频计算中,可以使用位运算 ... -
Java 中的弱引用
2014-10-14 14:31 553简单一点说,我们建议使用 WeakHashMap 在系 ... -
Stirng 字符串 原生方法 charAt 与 startWith
2014-10-11 11:23 756charAt(int index) 与 startWit ... -
Java 分割字符串 StringTokenizer
2014-10-10 19:15 695字符分割 jdk建议使用 split或者 正则表达式,但是追求 ... -
String 类的一点认识
2014-10-10 18:52 786String 是Java中相当强大的类,虽不属于基本类型 ... -
java 负载均衡
2014-10-09 19:10 949负载均衡的概念比较广。 具体可参见 http ...
相关推荐
在本文中,我们关注的是如何将一个包含多个单词的字符串分割成单个的单词(即Token),并计算这些单词的总数。 #### 2. 使用`StringTokenizer`类 Java提供了内置的`StringTokenizer`类来帮助开发者轻松地完成字符...
"Java笔试算法题及答案" 本资源是一份Java笔试算法题及答案的 ...这份资源涵盖了多个 Java 算法题目和解决方案,涵盖了字符串分割、数组排序、字符串截取、Unicode 字符、数组操作、方法重载和代码优化等多个知识点。
- **字符串分割**:对于简单的字符串分割操作,建议使用`String.split()`方法,但对于复杂的分割逻辑,可以考虑使用`StringTokenizer`类。 - **字符串池与intern()方法**:对于经常重复使用的字符串,可以利用字符...
2. `StringTokenizer`是另一种高效的字符串分割工具。相比于`split()`,它使用迭代器模式,减少了内存分配,特别适合处理复杂的分隔符情况。 3. `indexOf()`方法用于查找字符串中的特定字符或子串。虽然它简单直观...
1. **字符串分割**: - 使用`StringTokenizer`类或`String.split()`方法来根据逗号分割字符串。在提供的代码中使用了`StringTokenizer`。 - `StringTokenizer`通过`hasMoreTokens()`和`nextToken()`方法遍历并获取...
这将按照 `-` 分割字符串,得到 `"1"`, `"2"`, `"3"`, `"4"`, `"5"`。 在Android中,字符串拆分的应用非常广泛,比如解析CSV数据、处理JSON字符串、分析用户输入等。需要注意的是,`split()` 方法会返回一个字符串...
- 使用`StringTokenizer`类对字符串进行分割。 - 分割依据通常是分号(`;`),但由于实际`User-Agent`字符串中可能不包含分号,这里假设字符串已经被适当处理过。 ```java StringTokenizer st = new ...
这里我们采用简单的字符串分割方法来进行处理: ```java StringTokenizer st = new StringTokenizer(agent, ";"); st.nextToken(); // 忽略第一个分隔符之前的部分 String userBrowser = st.nextToken(); // 得到...
这个方法通过`StringTokenizer`对逗号进行分割,然后将结果存储在`String`数组中。接着,我们可以使用`Integer.parseInt`将`String`数组转换为`int`数组。最后,通过`Arrays.sort`对数组进行排序,可以选择升序或...
StringTokenizer 类用于将字符串分割成多个子串,常用于解析命令行参数或文本文件。 #### 8. Renaming the String Class 有时候为了防止命名冲突或更好地适应项目需求,开发者可能需要对String类进行重命名。 ###...
- **字符串分割**:使用`StringTokenizer`类来分割字符串,以便更高效地处理大量文本数据。 ### 8. 软件工程实践 最后,从这段代码还可以学到一些软件工程方面的知识: - **模块化设计**:通过将不同的功能封装到...
4. **字符串分割工具:** Java 提供了多种字符串处理工具,其中 `StringTokenizer` 是用于分割字符串的工具类。 - **答案:** C. StringTokenizer ### 窗口操作 5. **创建窗口:** 在Java中,创建一个带有标题的...
接下来利用`StringTokenizer`对字符串进行分割,统计分割后的token数量并展示在文本区域。最后遍历所有的token,通过调用`isNameAdressFormat`方法来筛选出有效的邮箱地址并展示出来。 #### 总结 本文介绍的Java...
`StringTokenizer.h`用于分割字符串。它可以将一个字符串按照指定的分隔符拆分成多个部分,这对于解析配置文件或处理命令行参数等场景非常有用。 #### 8. 重命名String类 有时候,为了避免名称冲突或适应项目的...
- **StringTokenizer被淘汰**:建议使用更现代的分割字符串的方法,如`String.split()`。 - **JDK7新增的工具方法**:列举了JDK7中新增的一些实用工具方法,如`Objects.equals()`、`Arrays.copyOfRange()`等。 6....
5. **文本解析**:解析TXT文件内容通常涉及字符串处理,如分割行、处理特殊字符等。Android可能使用`StringTokenizer`或正则表达式来实现。 6. **TextView与WebView**:Android中的`TextView`可以显示纯文本,但若...
JCLF可能提供了更强大、更灵活的字符串解析和分割功能,使得开发者能够更方便地处理复杂的字符串操作。 此外,JCLF还提供了增强的`Properties`替代品。`Properties`类在Java中用于处理配置文件,但其功能可能无法...
- 字符串解析:`StringTokenizer`类 **5.16 字符串与字符、字节数组** - **字符串与字符数组**: - 将字符串转换为字符数组:`str.toCharArray();` - 将字符数组转换为字符串:`new String(charArray);` - **...
- **字符串分割与连接**:使用StringTokenizer或正则表达式处理字符串。 6. **复杂度分析**: - **时间复杂度**:评估算法执行所需的时间资源,如O(n),O(n^2)等。 - **空间复杂度**:评估算法执行所需的内存...