java 获取子串速率比较分析
更新时间:2023年12月24日 11:35:15 作者:点墨
这篇文章主要为大家介绍了java 获取子串速率比较分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
需求:将给定字符串提取子串
有个需求,需要将给定字符串提取子串,比如(aaa.xx)变成aaa,有几个思路。
思路
- 使用正则模式匹配,然后替换
- 使用正则替换
- 使用substring
代码
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class main {
public static int len = 10000000;
public static void useRegMatch(){
LocalDateTime start = LocalDateTime.now();
List<String> v = new ArrayList<String>();
for(int i = 0; i < len; ++i) {
v.add("230202"+i+i+".IB"+i);
}
//handle use reg
Pattern pattern = Pattern.compile("^(.+)(\\.)(.+)$");
Matcher matcher;
for(int i = 0; i < v.size();++i){
matcher = pattern.matcher(v.get(i));
if(matcher.find()) {
v.set(i, matcher.group(1));
}
}
LocalDateTime end = LocalDateTime.now();
System.out.println("useRegMatch,waste:"+Duration.between(start, end).toMillis()+" "+v.get(0)+" "+v.get(1));
}
public static void useRegReplace(){
LocalDateTime start = LocalDateTime.now();
List<String> v = new ArrayList<String>();
for(int i = 0; i < len; ++i) {
v.add("230202"+i+i+".IB"+i);
}
//handle use reg
for(int i = 0; i < v.size();++i){
String newV = v.get(i).replaceAll("(\\.)(.+)$","");
v.set(i, newV);
}
LocalDateTime end = LocalDateTime.now();
System.out.println("useRegReplace,waste:"+Duration.between(start, end).toMillis()+" "+v.get(0)+" "+v.get(1));
}
public static void useSpliceIndexOf(){
LocalDateTime start = LocalDateTime.now();
List<String> v = new ArrayList<String>();
for(int i = 0; i < len; ++i) {
v.add("230202"+i+i+".IB"+i);
}
//handle use reg
for(int i = 0; i < v.size();++i){
v.set(i, v.get(i).substring(0,v.get(i).indexOf(".")));
}
LocalDateTime end = LocalDateTime.now();
System.out.println("useRegReplace,waste:"+Duration.between(start, end).toMillis()+" "+v.get(0)+" "+v.get(1));
}
public static void main(String[] args) {
useRegMatch();
useRegReplace();
useSpliceIndexOf();
}
}测试结果
如下:

结论
使用substring+indexOf的方式速度最快。
以上就是java 获取子串速率比较分析的详细内容,更多关于java 获取子串速率的资料请关注脚本之家其它相关文章!
相关文章
Java spring boot 实现支付宝支付功能的示例代码
这篇文章主要介绍了Java spring boot 实现支付宝支付功能,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06
SpringSecurity6.4中一次性令牌登录(One-Time Token Login)实现
Spring Security为一次性令牌认证提供了支持,本文就来介绍一下SpringSecurity6.4中一次性令牌登录(One-Time Token Login)实现,具有一定的参考价值,感兴趣的可以了解一下2025-03-03


最新评论