Java 生成隨機字符串數(shù)組

本篇文章的知識為沮脖,利用Collections.sort()方法對泛型為String的List 進行排序绘证。具體要求:

  • 1.創(chuàng)建完List<String>之后栽连,往其中添加十條隨機字符串
  • 2.每條字符串的長度為10以內(nèi)的隨機整數(shù)
  • 3.每條字符串的每個字符都為隨機生成的字符龄砰,字符可以重疊
  • 4.每條隨機字符串不可重復

將涉及到的知識有: String、StringBuffer蚁袭、ListArray黎炉、泛型玷室、Collections.sort桃煎、foreach篮幢、Random等相關(guān)知識,算是 在JAVA 學習過程中一個比較好的的實踐为迈。

1. 隨機生成一個字符

  • 1.1 先將所有的字母和0-9的數(shù)字存放于一個字符串中三椿,以便后續(xù)使用缺菌。
String str = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT
              uUvVwWxXyYzZ0123456789";
  • 1.2 因為要滿足隨機性,所以創(chuàng)建一個 Random 對象搜锰,利用其中的 nextInt(str.length) 方法生成一個 0 — str.length 的隨機數(shù)伴郁。
Random random = new Random();
int index = random.nextInt(str.length());
  • 1.3 再將上述生成的隨機數(shù)作為 str 字符串的索引取出相應的字符,及隨機生成了一個字符
char c = str.charAt(index);

2. 生成一條長度為10以內(nèi)的隨機字符串

  • 2.1 因為是10以內(nèi)且滿足隨機性蛋叼,所以此處使用 Math.random() 函數(shù)焊傅,其返回值為隨機 0.0 - 1.0 的 Double 類型的數(shù)
StringBuffer stringBuffer = new StringBuffer();
//確定字符串長度
int stringLength = (int) (Math.random()*10);
  • 2.2 現(xiàn)在字符串的長度可以確認,也實現(xiàn)了生成隨機的字符狈涮,再利用 for 循環(huán)就可以生成一條長度為10以內(nèi)的隨機字符串
for (int j = 0; j < stringLength; j++) {
    int index = random.nextInt(str.length());
    char c = str.charAt(index);
    stringBuffer.append(c);    
 }
//將StringBuffer轉(zhuǎn)換為String類型的字符串
String string = stringBuffer.toString(); 

3. 生成10條隨機字符串

  • 3.1 經(jīng)過上述的兩個步驟租冠,再在外部嵌套一個 for 循環(huán)就可以生成 10 條隨機字符串

4. 創(chuàng)建一個 ListArray<String> 集合儲存著10條隨機字符串

  • 4.1 創(chuàng)建一個 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 調(diào)用 Collections.sort() 方法對集合排序,其排序的規(guī)則如下:
    • 從左向右原則捏题,且0-9
    • 數(shù)字優(yōu)先原則玻褪,且A-Z
    • 字母大寫優(yōu)先原則,且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數(shù)字存入字符串中
        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;
    }
}

輸出答案不唯一

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市循狰,隨后出現(xiàn)的幾起案子窟社,更是在濱河造成了極大的恐慌,老刑警劉巖绪钥,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灿里,死亡現(xiàn)場離奇詭異,居然都是意外死亡程腹,警方通過查閱死者的電腦和手機匣吊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寸潦,“玉大人色鸳,你說我怎么就攤上這事〖” “怎么了命雀?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長池户。 經(jīng)常有香客問我咏雌,道長凡怎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任赊抖,我火速辦了婚禮统倒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氛雪。我一直安慰自己房匆,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布报亩。 她就那樣靜靜地躺著浴鸿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弦追。 梳的紋絲不亂的頭發(fā)上岳链,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音劲件,去河邊找鬼掸哑。 笑死,一個胖子當著我的面吹牛零远,可吹牛的內(nèi)容都是我干的苗分。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牵辣,長吁一口氣:“原來是場噩夢啊……” “哼摔癣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纬向,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤择浊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逾条,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近她,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年膳帕,在試婚紗的時候發(fā)現(xiàn)自己被綠了粘捎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡危彩,死狀恐怖攒磨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汤徽,我是刑警寧澤娩缰,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站谒府,受9級特大地震影響拼坎,放射性物質(zhì)發(fā)生泄漏浮毯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一泰鸡、第九天 我趴在偏房一處隱蔽的房頂上張望债蓝。 院中可真熱鬧,春花似錦盛龄、人聲如沸饰迹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啊鸭。三九已至,卻和暖如春匿值,著一層夾襖步出監(jiān)牢的瞬間赠制,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工挟憔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留憎妙,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓曲楚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褥符。 傳聞我的和親對象是個殘疾皇子龙誊,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)喷楣,斷路器趟大,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法铣焊,內(nèi)部類的語法逊朽,繼承相關(guān)的語法,異常的語法曲伊,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • 第十天 權(quán)限修飾符 public protected default private 同一類 true true ...
    炙冰閱讀 537評論 0 1
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,575評論 1 118
  • 你在我心中占據(jù)的時間太久坟募,我已經(jīng)習慣把你當做我心的主人岛蚤。每到夜晚,我就會匍匐在你身前懈糯,描畫著你的影子涤妒。然而,時間是...
    的確良閱讀 315評論 0 0