Java - ランダムな文字列を生成

Java –ランダム文字列を生成

この記事では、Javaでランダムな文字列を生成する方法を示します。最初に標準のJavaライブラリを使用し、the Apache Commons Lang libraryを使用します。

この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。

1. プレーンJavaでランダムな無制限の文字列を生成する

簡単に始めて、7文字に制限されたランダムな文字列を生成しましょう。

@Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
    byte[] array = new byte[7]; // length is bounded by 7
    new Random().nextBytes(array);
    String generatedString = new String(array, Charset.forName("UTF-8"));

    System.out.println(generatedString);
}

新しい文字列は、リモートの英数字ではないことに注意してください。

参考文献:

Javaの効率的な単語頻度計算機

Javaで単語を数えるさまざまな方法を調べ、それらがどのように機能するかを確認してください。

Java-ランダムロング、フロート、整数、ダブル

Javaで乱数を生成する方法を学びます-制限のない場合と特定の間隔内の場合の両方。

Java文字列プールのガイド

JVMがJava文字列プールの文字列ストレージに割り当てられるメモリ量を最適化する方法を学びます。

2. プレーンJavaを使用してランダムな境界文字列を生成する

次へ–より制約のあるランダムな文字列の作成を見てみましょう。小文字のアルファベットと設定された長さを使用して、ランダムな文字列を生成します。

@Test
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {

    int leftLimit = 97; // letter 'a'
    int rightLimit = 122; // letter 'z'
    int targetStringLength = 10;
    Random random = new Random();
    StringBuilder buffer = new StringBuilder(targetStringLength);
    for (int i = 0; i < targetStringLength; i++) {
        int randomLimitedInt = leftLimit + (int)
          (random.nextFloat() * (rightLimit - leftLimit + 1));
        buffer.append((char) randomLimitedInt);
    }
    String generatedString = buffer.toString();

    System.out.println(generatedString);
}

3. Apache CommonsLangを使用して有界ランダム文字列を生成する

ApacheのCommons Langライブラリは、ランダムな文字列の生成に大いに役立ちます。 generating a bounded String using only lettersを見てみましょう:

@Test
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() {

    int length = 10;
    boolean useLetters = true;
    boolean useNumbers = false;
    String generatedString = RandomStringUtils.random(length, useLetters, useNumbers);

    System.out.println(generatedString);
}

したがって、Javaの例のすべての低レベルコードの代わりに、これは単純なワンライナーで行われます。

4. Apache CommonsLangでアルファベット文字列を生成する

もう1つの非常に単純な例-今回は、アルファベット文字のみで、ブールフラグをAPIに渡さない境界付き文字列:

@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
    String generatedString = RandomStringUtils.randomAlphabetic(10);

    System.out.println(generatedString);
}

5. Apache CommonsLangを使用して英数字の文字列を生成する

そして最後に-同じランダムにバインドされた文字列ですが、今回は-数値:

@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
    String generatedString = RandomStringUtils.randomAlphanumeric(10);

    System.out.println(generatedString);
}

そして、これで完了です - プレーンJavaまたはApache Commons Libraryのいずれかを使用したcreating bounded and unbounded Strings

6. 結論

さまざまな実装方法により、プレーンJavaまたはApache Commons Libraryを使用して、バインドされた文字列とバインドされていない文字列を生成できました。

これらすべての例とスニペットの実装は、GitHub projectにあります。 これはMavenベースのプロジェクトであるため、インポートと実行が簡単である必要があります。