UUID如何优雅的去横杠-,用代码和测试说话

import java.util.ArrayList;

import java.util.UUID;

public class T {
public static void main(String[] args) {
final int SIZE = 10000;

ArrayList first = new ArrayList<>();

for (int i = 0; i < SIZE; i++) {
first.add(UUID.randomUUID());

}

long l1 = System.currentTimeMillis();

first.forEach(key -> directlyToString(key));

long l2 = System.currentTimeMillis();

first.forEach(key -> arrayCopyToString(key));

long l3 = System.currentTimeMillis();

first.forEach(key -> subStringToString(key));

long l4 = System.currentTimeMillis();

first.forEach(key -> forToString(key));

long l5 = System.currentTimeMillis();

first.forEach(key -> replaceToString(key));

long l6 = System.currentTimeMillis();

UUID uuid = UUID.randomUUID();

System.out.println(uuid.toString());

System.out.println(directlyToString(uuid));

System.out.println(arrayCopyToString(uuid));

System.out.println(subStringToString(uuid));

System.out.println(forToString(uuid));

System.out.println(replaceToString(uuid));

System.out.println(l2 - l1);

System.out.println(l3 - l2);

System.out.println(l4 - l3);

System.out.println(l5 - l4);

System.out.println(l6 - l5);

}

private static String directlyToString(UUID uuid) {
return Long.toHexString(uuid.getMostSignificantBits()) + Long.toHexString(uuid.getLeastSignificantBits());

}

private static String arrayCopyToString(UUID uuid) {
char[] dest = new char[32];

char[] src = uuid.toString().toCharArray();

System.arraycopy(src, 0, dest, 0, 8);

System.arraycopy(src, 9, dest, 8, 4);

System.arraycopy(src, 14, dest, 12, 4);

System.arraycopy(src, 19, dest, 16, 4);

System.arraycopy(src, 24, dest, 20, 12);

return new String(dest);

}

private static String subStringToString(UUID uuid) {
String src = uuid.toString();

return src.substring(0, 8) + src.substring(9, 13) + src.substring(14, 18) + src.substring(19, 23) + src.substring(24, 36);

}

private static String forToString(UUID uuid) {
char[] src = uuid.toString().toCharArray();

char[] chars = new char[32];

for (int i = 0, j = 0; i < src.length; i++) {
char c = src[i];

if ('-' != c) {
chars[j++] = c;

}

}

return new String(chars);

}

private static String replaceToString(UUID uuid) {
return uuid.toString().replaceAll("-", "");

}

}

5种方式

结论

arrayCopy的方式效率最高,其次是循环给数组赋值的方式,一直很稳定的高效率,不论次数多少

用longToHexStrin的方式优化能力很强,10万次的时候就会优于字符串拼接

最差劲的方式就是正则,可见正所谓能不用正则就不用正则

推荐使用数组copy或者循环复制的方式

懒省事了,可以用longToHexString的方式,这种方式优化能力最强,而且最优雅

千万不要用正则,正则最难优化,而且效率最低

UUID去横杠的5种方式相关推荐

  1. java uuid去掉横线_UUID去横杠-的正确方式

    UUID如何优雅的去横杠-,用代码和测试说话 import java.util.ArrayList; import java.util.UUID; public class T { public st ...

  2. 表格和列表去虚线框的几种方式——Qt

    去虚线框三种方式: 设置焦点策略为无焦点 因为虚线框是针对焦点设置的qss,所以当把策略设为无焦点,就根本不会有焦点,也就是根本不会出现虚线框了. ui->listWidget->setF ...

  3. 光复用技术中三种重要技术_颈前深蹲中横杠的精确位置和安全稳固抓握杠铃的三种方式及技术细节!!...

    深蹲是健身的王牌动作,它有很多种变式,从杠铃安放的位置来看又分颈前深蹲.颈后低杠位深蹲.颈后高杠位深蹲,相比于颈后深蹲,颈前深蹲能够让你更好的维持背部直立,减轻脊柱压力,更针对大腿前侧肌肉的训练,同时 ...

  4. MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式

    MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式 2015-01-18 00:11 https://www.muhanxue.com/essa ...

  5. Linux对显卡驱动相关操作后,重启进不去图形界面,左上角一个横杠在闪

    问题描述: NVIDA显卡驱动随着linux内核的更新而失效,nvida-smi没有出现显卡的相关信息.于是尝试之间在软件和更新这里选择驱动.结果是在重启进不去图形界面,左上角一个横杠在闪. 原因分析 ...

  6. java中的uuid是啥,UUID在Java中的两种发作方式

    需求: 集群环境下需要产生uuid,uuid的作用不言而喻 转发请注明出处:http://snv.iteye.com/ 环境: org.safehaus.jug jug 2.0.0 asl 或: or ...

  7. 技术人生感悟之陈果:如果你累了,就换一种方式去生活

    复旦大学教授陈果在<好的孤独>中说:"换一种看法,便是换一种活法." 世间的活法有千万种,总会有一种是适合我们的. 人生苦短,如果你觉得累了,不如就换一种活法. 1.一 ...

  8. 教拉克丝去面试(一),String转换成int的几种方式

    这是一篇用趣味化的形式给大家来讲java面试, "语不惊人死不休",没错,本篇文章的标题就是这么酷炫,接受不了的同学就别点进来看了,所谓好奇心害死猫:能够接受的同学我只能说你赚到了 ...

  9. Linux查看磁盘UUID的几种方式

    Linux查看磁盘UUID的几种方式 查看/dev/disk/by-uuid目录 blkid命令 tune2fs和dumpe2fs配合grep 查看/dev/disk/by-uuid目录 命令:ls ...

最新文章

  1. C#在客户端和服务端操作Excel文件
  2. 【JAVA】大整数数据量排序
  3. Jquery json的超强组合
  4. 监控最佳实践--redis及业务接口
  5. POJ 2227 The Wedding Juicer——堆的应用——Pku2227
  6. linux mint 18 mysql_linux mint下mysql中文支持问题
  7. 深入一致性哈希(Consistent Hashing)算法原理
  8. java consul服务发现_分布式项目(七)consul 服务注册与发现
  9. DXperience12.2入门设置以及应用教程
  10. vue-cli项目中使用Mint-ui中的mt-cell、mt-popup、mt-picker实现仿淘宝添加收货地址页面(地址三级联动 附全国省市区json文档)
  11. 深度学习 deep learning 花书 pdf下载
  12. java开源知识库项目_18个java cms开源项目
  13. 9.1 Servlet容器实例
  14. 网站 小图标 大全 url
  15. 当当网注册页面html源代码,当当网HTML源代码
  16. 二维码生成器如何制作二维码
  17. Windows 10免费影音制作下载(Windows Movie Maker 2012)
  18. 计算机cccc比赛,2019第四届中国高校计算机大赛—团体程序设计天梯赛 CCCC 总结...
  19. 北京某公司IBM X3650M3存储崩溃的解决过程
  20. 【NVMe2.0b 8】NVMe 队列仲裁机制

热门文章

  1. php的AES-128 EBC加密、解密
  2. 怎么不用U盘PE制作双系统
  3. 更改高通平台开机logo和开机动画以及fastboot界面显示
  4. 财会法规与职业道德【7】
  5. “T3出行”产品体验分析报告
  6. 数据人如何提高核心竞争力
  7. 端粒效应《The Telemere Effect》程序员的养生指南(一)压力、端粒与衰老
  8. matlab 编程小球经历路程(s)以及第几次反弹高度(L)
  9. Arduino基础入门之十三 温湿度传感器DHT11
  10. 基于本地存储LVM新建虚机方案