JAVA如何生成随机不重复字符串
问题详情
在工作中碰到了这个场景,要生产一系列不重复的字符串放到一个数组中去,其中字符串由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[] <