Maison > Java > javaDidacticiel > le corps du texte

Introduction à la façon de générer un tableau de chaînes aléatoires en Java

黄舟
Libérer: 2017-08-10 09:59:39
original
4212 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes sur les exemples détaillés de génération de tableaux de chaînes aléatoires par Java. Il utilise principalement la méthode Collections.sort() pour trier la liste des chaînes génériques. Les amis dans le besoin peuvent s'y référer

Exemple détaillé de génération d'un tableau de chaînes aléatoires en Java

Utilisez la méthode Collections.sort() pour trier une liste dont le type générique est String. Exigences spécifiques :

1. Après avoir créé List, ajoutez-y dix chaînes aléatoires

2 La longueur de chaque chaîne est un entier aléatoire compris entre 10
3. La chaîne est un caractère généré aléatoirement et les caractères peuvent se chevaucher
4. Chaque chaîne aléatoire ne peut pas être répétée

Les connaissances impliquées sont : String, StringBuffer, ListArray, Generics, Collections.sort, foreach. , Les connaissances aléatoires et autres connaissances connexes peuvent être considérées comme une pratique relativement bonne dans le processus d'apprentissage JAVA.

1. Générez aléatoirement un caractère

1.1 Enregistrez d'abord toutes les lettres et chiffres de 0 à 9 dans une chaîne pour une utilisation ultérieure.



String str = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT
       uUvVwWxXyYzZ0123456789";
Copier après la connexion
1.2 Parce que nous devons satisfaire le caractère aléatoire, nous créons un objet Random et utilisons la méthode nextInt(str.length) pour générer un 0 — str. longueur du nombre aléatoire.



Random random = new Random();
int index = random.nextInt(str.length());
Copier après la connexion
1.3 Utilisez ensuite le nombre aléatoire généré ci-dessus comme index de la chaîne str pour récupérer le caractère correspondant, et générer aléatoirement un caractère



char c = str.charAt(index);
Copier après la connexion

2. Générez une chaîne aléatoire d'une longueur inférieure à 10

2.1 Parce qu'elle est inférieure à 10 et répond aux randomness , donc la fonction Math.random() est utilisée ici, et sa valeur de retour est un nombre aléatoire de type double 0,0 - 1,0



StringBuffer stringBuffer = new StringBuffer();
//确定字符串长度
int stringLength = (int) (Math.random()*10);
Copier après la connexion
2.2 Maintenant la chaîne La longueur peut être confirmée et des caractères aléatoires peuvent être générés. Utilisez ensuite la boucle for pour générer une chaîne aléatoire d'une longueur inférieure à 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();
Copier après la connexion

3. Générer 10 chaînes aléatoires

3.1 Après les deux étapes ci-dessus, puis imbriquer une boucle for à l'extérieur, vous pouvez générer 10 chaînes aléatoires


4. Créez une collection ListArray pour stocker 10 chaînes aléatoires

4.1 Créez une collection de type String, cette étape doit être complétée simultanément avec l'étape 3



List<String> listString = new ArrayList<String>();
Copier après la connexion
4.2 Ajoutez une chaîne générée à chaque fois à la collection Faites attention à l'utilisation de la méthode Contains() de la collection pour déterminer si la même chaîne existe déjà dans la collection String. (même si la probabilité est très faible).



//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
if(!(listString.contains(stringBuffer.toString()))){
   listString.add(stringBuffer.toString());
 }else {
   //i-- 如果不满足则重新生成
  i--;
 }
Copier après la connexion

5 Enfin, triez la collection

5.1 Appelez la méthode Collections.sort() pour trier la collection, Les règles de tri sont les suivantes :


  • de gauche à droite, et 0-9

  • numéro prioritaire, et A-Z

  • Le principe de priorité des majuscules des lettres, et a-z


Le code total


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;
  }
}
Copier après la connexion
La réponse de sortie n'est pas unique

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal