gpt4 book ai didi

Java 生成随机字符串数组的实例详解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java 生成随机字符串数组的实例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Java 生成随机字符串数组的实例详解 。

利用Collections.sort()方法对泛型为String的List 进行排序。具体要求:

1.创建完List<String>之后,往其中添加十条随机字符串 2.每条字符串的长度为10以内的随机整数 3.每条字符串的每个字符都为随机生成的字符,字符可以重叠 4.每条随机字符串不可重复 。

将涉及到的知识有: String、StringBuffer、ListArray、泛型、Collections.sort、foreach、Random等相关知识,算是 在JAVA 学习过程中一个比较好的的实践.

1. 随机生成一个字符 。

1.1 先将所有的字母和0-9的数字存放于一个字符串中,以便后续使用.

?
1
2
String str = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT
        uUvVwWxXyYzZ0123456789";

1.2 因为要满足随机性,所以创建一个 Random 对象,利用其中的 nextInt(str.length) 方法生成一个 0 — str.length 的随机数.

?
1
2
Random random = new Random();
int index = random.nextInt(str.length());

1.3 再将上述生成的随机数作为 str 字符串的索引取出相应的字符,及随机生成了一个字符 。

?
1
char c = str.charAt(index);

2. 生成一条长度为10以内的随机字符串 。

2.1 因为是10以内且满足随机性,所以此处使用 Math.random() 函数,其返回值为随机 0.0 - 1.0 的 Double 类型的数 。

?
1
2
3
StringBuffer stringBuffer = new StringBuffer();
//确定字符串长度
int stringLength = ( int ) (Math.random()* 10 );

2.2 现在字符串的长度可以确认,也实现了生成随机的字符,再利用 for 循环就可以生成一条长度为10以内的随机字符串 。

?
1
2
3
4
5
6
7
for ( int j = 0 ; j < stringLength; j++) {
   int index = random.nextInt(str.length());
   char c = str.charAt(index);
   stringBuffer.append(c); 
  }
//将StringBuffer转换为String类型的字符串
String string = stringBuffer.toString();

3. 生成10条随机字符串 。

3.1 经过上述的两个步骤,再在外部嵌套一个 for 循环就可以生成 10 条随机字符串 。

4. 创建一个 ListArray<String> 集合储存着10条随机字符串 。

4.1 创建一个 String 类型集合,该步奏应该和步奏3同步完成 。

?
1
List<String> listString = new ArrayList<String>();

4.2 将每次生成的一条字符串添加到集合中,注意利用集合的 Contains() 方法判断集合中之前是否已存在相同的字符串(虽然概率很小).

?
1
2
3
4
5
6
7
//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
if (!(listString.contains(stringBuffer.toString()))){
    listString.add(stringBuffer.toString());
  } else {
    //i-- 如果不满足则重新生成
   i--;
  }

5 最后对集合排序 。

5.1 调用 Collections.sort() 方法对集合排序,其排序的规则如下:

  • 从左向右原则,且0-9
  • 数字优先原则,且A-Z
  • 字母大写优先原则,且a-z

总的代码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Random;
 
public class RandomString {
 
   public static void main(String[] args) {
     List<String> strList = randomString();
     System.out.println( "------随机生成的10条字符串-------" );
     for (String string : strList) {
       System.out.println(string);
     }
     System.out.println( "------------排序后------------" );
     Collections.sort(strList);
     for (String string : strList) {
       System.out.println(string);
    
   }
   public static List<String> randomString(){
     //将所有的大小写字母和0-9数字存入字符串中
     String str = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789" ;
     Random random = new Random();
     List<String> listString = new ArrayList<String>();
     String strArray[ ] = new String[ 10 ];
     //生成10条长度为1-10的随机字符串
     for ( int i = 0 ; i < 10 ; i++) {
       StringBuffer stringBuffer = new StringBuffer();
       //确定字符串长度
       int stringLength = ( int ) (Math.random()* 10 );
        for ( int j = 0 ; j < stringLength; j++) {
          //先随机生成初始定义的字符串 str 的某个索引,以获取相应的字符
         int index = random.nextInt(str.length());
         char c = str.charAt(index);
         stringBuffer.append(c); 
        }
        //判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
        if (!(listString.contains(stringBuffer.toString()))) {
          listString.add(stringBuffer.toString());
       } else {
         i--;
       }
 
     }
     return listString;
   }
}

输出答案不唯一 。

以上就是Java 生成随机字符串数组的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。

原文链接:http://www.jianshu.com/p/61db371f1635 。

最后此篇关于Java 生成随机字符串数组的实例详解的文章就讲到这里了,如果你想了解更多关于Java 生成随机字符串数组的实例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com