首頁 > Java > java教程 > 主體

Java中如何產生隨機字串陣列的方法介紹

黄舟
發布: 2017-08-10 09:59:39
原創
4212 人瀏覽過

這篇文章主要介紹了Java 產生隨機字串陣列的實例詳解的相關資料,主要是利用Collections.sort()方法對泛型為String的List 進行排序,需要的朋友可以參考下

Java 產生隨機字串陣列的實例詳解

利用Collections.sort()方法對泛型為String的List 進行排序。具體要求:

1.創建完List之後,往其中加入十條隨機字串
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 集合儲存著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 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 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中如何產生隨機字串陣列的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板