问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

交个作业!!!

package com.practice;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * 练习:利用Collections.sort()方法对泛型为String的List排序
 *1、创建List<String> stringList=new ArrayList<String>();往其中添加十条随机字符串
 *2、每条字符串长度为10以内的随机整数
 *3、每条字符串的每个字符为随机生成的字符,字符可以重复
 *4、每条随机生成的字符串不可以重复
 */
public class CollectionsSort {

 /*

*创建 返回一个规定长度的字符串的方法

*/
  public static String getRandomString(int length){
      String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
     //由Random生成随机数
      Random random=new Random();
      //创建一个StringBuffer空对象;
      StringBuffer sb=new StringBuffer();
      //循环length次
      for(int i=0;i<length;i++){
        int number=random.nextInt(str.length()-1);
        //将length次产生的字符通过加入到sb中
        sb.append(str.charAt(number));
      }
      //将承载的StringBuffe字符串转换为String字符串
      return sb.toString();
  }
 

/*

*创建 含十条随机字符串的List并实现排序

*/
 
  public static void getRandomStringList(){
            List<String> stringList=new ArrayList<String>();
            Random random=new Random();
            String st;
            for(int i=0;i<10;i++) {
       do {
       st=CollectionsSort.getRandomString(random.nextInt(9)+1);
       }while(stringList.contains(st)); //如果stringList包含生成的字符需要重新生成一个
       stringList.add(st);
       System.out.println("将要添加字符串:"+st);
      } 
       System.out.println("------------排序前---------------");
       for (String string : stringList) {
        System.out.println("元素:"+string);
       } 
       
       Collections.sort(stringList);
       System.out.println("------------排序后---------------");
       for (String string : stringList) {
        System.out.println("元素:"+string); 
       }
  }
  
  public static void main(String[] args) {
   CollectionsSort.getRandomStringList();
 }
 
}


提问者:qq_A_229 2018-08-19 16:02

个回答

  • aowan
    2018-08-20 19:31:22

    public String testRandomString() {

    StringBuilder stringBuilder = new StringBuilder();

    // 存放所包含字符62位

    String container = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    Random random = new Random();

    int num = 0;

    while (num == 0) {

    num = random.nextInt(10);

    }

    for (int i = 0; i < num; i++) {

    int index = random.nextInt(62);

    stringBuilder.append(container.charAt(index));

    }

    return stringBuilder.toString();

    }