ホームページ  >  記事  >  Java  >  Java でランダムな文字列配列を生成する方法の概要

Java でランダムな文字列配列を生成する方法の概要

黄舟
黄舟オリジナル
2017-08-10 09:59:394209ブラウズ

この記事では、主に Java のランダムな文字列配列を生成する詳細な例に関する関連情報を紹介します。主に Collections.sort() メソッドを使用して汎用文字列のリストを並べ替えます。必要な方は参照してください。

Java 生成の詳細な説明ランダムな文字列配列の例

ジェネリック型が String である List を並べ替えるには、Collections.sort() メソッドを使用します。具体的な要件:

1. Listf7e83be87db5cd2d9a8a0b8117b38cd4 を作成した後、それに 10 個のランダムな文字列を追加します
2. 各文字列の長さは 10 以内のランダムな整数です
3. 各文字列の各文字はランダムに生成されます。
4. 各ランダム文字列は繰り返すことができません

必要な知識は次のとおりです: String、StringBuffer、ListArray、generics、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未満のString

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 パス 上記の 2 つの手順と、外側に for ループをネストすると、10 個のランダムな文字列を生成できます


4. 10 個のランダムな文字列を保存する ListArrayf7e83be87db5cd2d9a8a0b8117b38cd4 コレクションを作成します

; 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。