精华内容
下载资源
问答
  • java生成不重复字符串UUID

    千次阅读 2020-07-13 21:23:28
    java生成不重复字符串 使用场景 一个很小的知识知识点吧。数据库中的主键标识要求唯一不重复,二开发过程中可能因为主键标识会作为前端的一个节点标识也要求不能重复。这个时候从不同的表中拿出来的主键标识很大...

    java生成不重复的字符串

    使用场景

    一个很小的知识知识点吧。数据库中的主键标识要求唯一不重复,二开发过程中可能因为主键标识会作为前端的一个节点标识也要求不能重复。这个时候从不同的表中拿出来的主键标识很大可能就会相同。怎样才能让所有表中的主键标识都不一样呢?这里就用到了String id = UUID.randomUUID().toString()。 它可以生成32位随机的不同的字符串(百年内不会生成相同的字符串)。

    原理

    UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字

    UUID由以下几部分的组合:
    1、当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
    2、时钟序列。
    3、全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

    展开全文
  • JAVA如何生成随机不重复字符串问题详情问题分析从问题的要求来看,可以分部实现:1、实现随机字符生成从而实现字符串生成。2、实现字符串字符串之间的不重复性。代码实现测试结果 问题详情 在工作中碰到了这个...

    问题详情

    在工作中碰到了这个场景,要生产一系列不重复的字符串放到一个数组中去,其中字符串由a-z,A-Z,0-9随机组成,而且不能出现重复字符串。如提供数组长度length,字符串个数size

    问题分析

    从问题的要求来看,可以分部实现:

    1、实现随机字符的生成从而实现字符串的生成。

    由于字符串是由字符组成,所以实现生成随机的字符是关键,那样多个随机字符就可以得到字符串。随机字符生成可以由a-z,A-Z,0-9组成的字符串

    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    

    中随机抽取一个字符来实现,那么选择length个就可以选出一个随机字符串了。

    2、实现字符串与字符串之间的不重复性。

    我们说当遇到不重复这种问题时会想到什么呢?没错了,就是使用集合保存,当我们用一个集合保存所生成的集合时候就可以做到不存在重复的问题了。当然了这里只是一次生成的不存在重复的字符串,如果说要生成全局唯一字符串,那么可能要加上一些信息从而做到全局唯一,1、前面加时间戳,2、本机mac地址、ip信息等等,其实要看场景设计有没有需要,这就要深一步讨论。

    代码实现

    这里实现的是一个函数输入数组size和字符串长度length,返回一个包含size个每个长length的随机字符串数组。

       /**
         * 题目:让你输入大小为size个每个长度为length的不重复数组,一个含有字母和数字的
         * 思路:使用随机数选择a-z,A-Z,0-9的数组中的字符组成字符串,使用set保存,就不会有不重复的字符串了
         *
         * @param length 字符串长度
         * @param size 字符数组个数
         * @return 一个字符串数组
         */
        public static String[] getRandomStringArray(int length,int size){
            String[] strs = new String[size];
            char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            HashSet<String> set = new HashSet<>();
            while (set.size() < size){//生成随机字符串到set里面
                sb.setLength(0);
                for (int i = 0; i < length; i++)
                    sb.append(chars[random.nextInt(62)]);
                set.add(sb.toString());
            }
            int i= 0;
            for (String s : set)//将set里面的数据存放到数组
                strs[i++] = s;
            return strs;
        }
    
    

    测试结果

    调用函数:

    getRandomStringArray(10, 10);//生成10个长度为10的随机字符串
    

    结果

    3SRlDigF4Y
    6BeLjPJDKG
    MNsdsFocy3
    7EGwej0gWx
    Ae3E9lNRc5
    jwJidxZ41X
    vVebpC1qFw
    swi4XlnWnf
    HxwAE9SHeo
    lBgIkTzF4Z
    
    展开全文
  •  *类描述:生成不重复随机字符串包括字母数字  *编码人员:lizongyu  *创建时间:2016年9月27日上午11:17:03  */ public class InvitationCode { public static String generateRandomStr(int len) {  //...
    /**
    
     *类描述:生成不重复随机字符串包括字母数字
     *编码人员:lizongyu
     *创建时间:2016年9月27日上午11:17:03
     */
    public class InvitationCode {
    public static String generateRandomStr(int len) {
       //字符源,可以根据需要增减
       String generateSource = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
       String rtnStr = "";
       for (int i = 0; i < len; i++) {
           //循环随机获得当次字符,并移走选出的字符
           String nowStr = String.valueOf(generateSource.charAt((int) Math.floor(Math.random() * generateSource.length())));
           rtnStr += nowStr;
           generateSource = generateSource.replaceAll(nowStr, "");
       }
       return rtnStr;
    }
     
    public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(generateRandomStr(10));
       }
    }
    }
    展开全文
  • 今天学了一个随机字符串生成方法,可以生成任意长度的随机字符串重复的概率很小。如下: package random; import java.util.Random; public class RandomNum { private static char ch[] = { '0', '1',...

    今天学了一个随机字符串的生成方法,可以生成任意长度的随机字符串,重复的概率很小。如下:

    package random;
    
    import java.util.Random;
    
    public class RandomNum {
        private static char ch[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
                '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
                'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
                'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
                'z', '0', '1' };//最后又重复两个0和1,因为需要凑足数组长度为64
    
        private static Random random = new Random();
    
        //生成指定长度的随机字符串
        public static String createRandomString(int length) {
            if (length > 0) {
                int index = 0;
                char[] temp = new char[length];
                int num = random.nextInt();
                for (int i = 0; i < length % 5; i++) {
                    temp[index++] = ch[num & 63];//取后面六位,记得对应的二进制是以补码形式存在的。
                    num >>= 6;//63的二进制为:111111
                    // 为什么要右移6位?因为数组里面一共有64个有效字符。为什么要除5取余?因为一个int型要用4个字节表示,也就是32位。
                }
                for (int i = 0; i < length / 5; i++) {
                    num = random.nextInt();
                    for (int j = 0; j < 5; j++) {
                        temp[index++] = ch[num & 63];
                        num >>= 6;
                    }
                }
                return new String(temp, 0, length);
            } else if (length == 0) {
                return "";
            } else {
                throw new IllegalArgumentException();
            }
        }
       
        //根据指定个数,测试随机字符串函数的重复率
        public static double rateOfRepeat(int number){
            int repeat=0;
            String[] str=new String[number];
            for(int i=0;i<number;i++){//生成指定个数的字符串
                str[i]=RandomNum.createRandomString(10);
            }
            for(int i=0;i<number;i++){//查找是否有相同的字符串
                for(int j=i+1;j<number-1;j++){
                    if(str[i].equals(str[j]))
                        repeat++;
                }
            }
            return ((double)repeat)/number;
        }
    
        public static void main(String[] args) {
            System.out.println(RandomNum.createRandomString(10));
            double rate=RandomNum.rateOfRepeat(10000);//测试10000次的重复率
            System.out.println("重复率:"+rate);
        }
    }

     
    我得到的几个结果都是0.0

     

    转自http://g.kehou.com/t1007615389.html

    展开全文
  • java随机生成6位不重复字符串

    千次阅读 2019-04-18 17:07:42
    public String getlinkNo() { String linkNo = "";... // 用字符数组的方式随机 String model = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] m = model.toCharArray(); for (int j = 0; j < 6; j++) ...
  • 为了保证全工程生成随机字符串不重复,查询了相关文档,也看到了一些优秀的实现方式,但都无法满足自己的要求。因此考虑到项目的需要,码了一个工具类。记录于此,共需要的小伙伴参考。 代码片 import lombok....
  • 生成不重复12位随机字符串

    千次阅读 2019-04-12 16:18:52
    1.生成一个12位随机不重复纯数字字符串 public static String couponCode(){ int first = new Random().nextInt(9); int rnd = UUID.randomUUID().toString().hashCode(); if(rnd < 0){ ...
  • java生成一个由大写字母和数字组成的6位随机字符串,并且字符串不重复,求代码。
  • 我首先做了一个生成随机字符串的类。以后你不论在什么时候,想得到随机字符串只需要实例化一次这个类即可。而且我允许用户根据自己的需要自定义生成的字符串的规格。如:想生成几个字符串,每个字符串包含多少个字符...
  • UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字 UUID...
  • java 生成八位 永远不重复字符串。。。。。。。。。。。。。。。。。
  • 主键值必须唯一标识表中的每一行,且能为 NULL,即表中可能存在有相同主键值的两行数据。这是唯一性原则。 package cn.baldprogrammer.test; import org.junit.Test; import cn.commons.CommonUt..
  • java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复随机字符串 1 package com.zdz.test; 2 3 import java.math.BigInteger; 4 ...
  • Java生成随机字符串与md5加密

    千次阅读 2017-04-13 20:59:44
    Java生成随机字符串,使用单例模式的原因是可以进一步提高不重复的概率。public class TokenUtils { private static TokenUtils ourInstance = new TokenUtils(); public static TokenUtils getInstance() { ...
  • java创建一个长度是100的字符串数组 使用长度是2的随机字符填充该字符串数组 统计这个字符串数组里重复字符串有多少种 public static void main(String[] args) { //设置String类型数组,长度为100 String[] ...
  • //产生100个随机字符串,比较字符串,统计这个字符串数组里重复的字符串有多少种.两种方法1.使用for,在判断是否已存在重复的,则不再进行这个字符串的比较。2.使用HashSet的重复性方法1:package 数字与字符串; ...
  • 从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。 UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID: package com.mytest; import java...
  • 这里记录一个自定义的工具类,用于利用ip和时间戳来生成一个随机不重复字符串,该工具类的可用于文件上传时生成文件名,这样保证上传的文件不会因为文件名重复而出现文件覆盖的现象。 特此记录,以便取用! ...
  • Java随机字符串工具类

    2021-01-04 10:36:55
    在造测试数据的时候,发现自动生成随机字符串的工具是多么有用,闲来无事就写了一个,将来会不会更新就一切随缘了。 package random; import java.util.HashSet; import java.util.Iterator; import java.util....
  • java随机字符串

    2017-08-01 19:59:40
    随机字符串就用这个,非常给力! 关于我的故事 前段时间项目中提出一个编码用5位随机字母 + 5位随机数字产生编码的需求,并且要求每个编码只能被使用一次,这种组合的总数是5位的26进制的字母组合加5位的10...
  • 今天在看面试题的时候,看到了这样的题。做一遍后记录下来方便再次查阅。如果有更好的答案欢迎大家来解答。码上 ... import java.util.Arrays;... * @description 随机字符串数组求重复数据 * @data: 2020/2/...
  • 1.java生成随机不重复10位字符串

    千次阅读 2016-03-18 14:11:00
    1 package org.changneng.util; 2 3 import java.util.Random; 4 public class A { 5 public static void main(String args[]){ 6 for(int i=0;i&lt;100;i++){ 7 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,654
精华内容 22,261
关键字:

java生成不重复的随机字符串

java 订阅