這篇文章主要介紹了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
#
List<String> listString = new ArrayList<String>();
//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性 if(!(listString.contains(stringBuffer.toString()))){ listString.add(stringBuffer.toString()); }else { //i-- 如果不满足则重新生成 i--; }
5 最後對集合排序
5.1 呼叫Collections.sort() 方法對集合排序,其排序的規則如下:
#總的程式碼
##
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) { ListstrList = 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中文網其他相關文章!