当前位置: 移动技术网 > IT编程>开发语言>Java > Java 生成随机字符串数组的实例详解

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

大学生论坛,年会游戏大全,芭比之歌星公主国语版全集

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的数字存放于一个字符串中,以便后续使用。

string str = "aabbccddeeffgghhiijjkkllmmnnooppqqrrsstt
       uuvvwwxxyyzz0123456789";

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

random random = new random();
int index = random.nextint(str.length());

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

char c = str.charat(index);

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

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

stringbuffer stringbuffer = new stringbuffer();
//确定字符串长度
int stringlength = (int) (math.random()*10);

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

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同步完成

list<string> liststring = new arraylist<string>();

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

//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
if(!(liststring.contains(stringbuffer.tostring()))){
   liststring.add(stringbuffer.tostring());
 }else {
   //i-- 如果不满足则重新生成
  i--;
 }

5 最后对集合排序

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

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

总的代码

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 生成随机字符串数组的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网