Day_12【集合】扩展案例3_产生10个长度为10,不能重复,由数字0-9,小写字母和大写字母组成的字符串

分析以下需求,并用代码实现

  •   1.产生10个1-20之间的随机数要求随机数不能重复
      2.产生10个长度为10的不能重复的字符串(里面只能出现大写字母、小写字母、0-9的数字),并遍历打印输出
    

代码

package com.itheima;

import java.util.ArrayList;
import java.util.Random;

public class Test3 {
	public static void main(String[] args) {
		// 定义一个空字符串
		String str = "";
		// 创建字符串对象
		StringBuilder sb = new StringBuilder();
		// 将数字0-9存储到字符串sb中
		for (int i = 0; i <= 9; i++) {
			sb.append(i);
		}
		// 将小写字母存储到字符串sb中
		for (int i = 97;i <= 122;i++) {
			//对字符串的类型进行强转
			sb.append((char) i );
		}
		// 将大写字母存储到字符串sb中
		for (int i = 65;i <= 90;i++) {
			sb.append((char) i );
		}
		//将sb的内容存储到字符串str中
		str = sb.toString();
		
		//创建随机数对象
		Random rand = new Random();
		//创建集合对象存储不重复的字符串
		ArrayList<String> list = new ArrayList<String>();
		//创建缓冲区对象                 ---------        何为缓冲区对象
		StringBuilder sb2 = new StringBuilder();
		//使集合长度始终为10
		while(list.size() < 10){
			// 循环产生长度为10的字符串
			for (int i = 0;i < 10;i++){
				// 数字0-9,小写字母,大写字母加起来一共62位
				int random = rand.nextInt(62);
				sb2.append(str.charAt(random));
			}
			// 去重
				if (!list.contains(sb2.toString())){
					list.add(sb2.toString());
				}
				//清除缓冲区,为了下次继续产生新的字符串
				sb2.delete(0, sb2.length());
		}
		System.out.println(list);
		
		
	}

}

原文地址:https://www.cnblogs.com/zzzsw0412/p/12772524.html