package com.template.common.utils; import java.text.ParseException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; /** * @Author: binguo * @Date: 2023/7/25 星期二 14:20 * @Description: com.repair.common.utils * @Version: 1.0 */ public class StrUtils { public static String getRandomName(String fileName){ int index=fileName.lastIndexOf("."); String houzhui=fileName.substring(index);//获取后缀名 String uuidFileName=UUID.randomUUID().toString().replace("-","")+houzhui; return uuidFileName; } /** * 采用URL Base64字符,即把“+/”换成“-_” */ static private char[] alphabet = "01234567899876543210012345678998765432100123456789987654321001234".toCharArray();//"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789xyz".toCharArray(); /** * 获取指定位数的UUID * @param bits 指定位数 * @return */ public static String getUUIDBits(int bits) { UUID uuid = UUID.randomUUID(); long msb = uuid.getMostSignificantBits(); long lsb = uuid.getLeastSignificantBits(); char[] out = new char[24]; int tmp = 0, idx = 0; // 循环写法 int bit = 0, bt1 = 8, bt2 = 8; int mask = 0x00, offsetm = 0, offsetl = 0; for(; bit < 16; bit += 3, idx += 4) { offsetm = 64 - (bit + 3) * 8; offsetl = 0; tmp = 0; if(bt1 > 3) { mask = (1 << 8 * 3) - 1; } else if(bt1 >= 0) { mask = (1 << 8 * bt1) - 1; bt2 -= 3 - bt1; } else { mask = (1 << 8 * ((bt2 > 3) ? 3 : bt2)) - 1; bt2 -= 3; } if(bt1 > 0) { bt1 -= 3; tmp = (int) ((offsetm < 0) ? msb : (msb >>> offsetm) & mask); if(bt1 < 0) { tmp <<= Math.abs(offsetm); mask = (1 << 8 * Math.abs(bt1)) - 1; } } if(offsetm < 0) { offsetl = 64 + offsetm; tmp |= ((offsetl < 0) ? lsb : (lsb >>> offsetl)) & mask; } if(bit == 15) { out[idx + 3] = alphabet[64]; out[idx + 2] = alphabet[64]; tmp <<= 4; } else { out[idx + 3] = alphabet[tmp & 0x3f]; tmp >>= 6; out[idx + 2] = alphabet[tmp & 0x3f]; tmp >>= 6; } out[idx + 1] = alphabet[tmp & 0x3f]; tmp >>= 6; out[idx] = alphabet[tmp & 0x3f]; } return new String(out, 0, bits); } public static void main(String[] args) throws ParseException { List data = new ArrayList<>(); for (int i = 0;i<10000000;i++){ String sss = getUUIDBits(15); data.add(sss); } long allCount = data.size(); long disCount = data.stream().distinct().count(); Collections.sort(data); String sss =""; } }