Java-慕课网例子-对列表元素排序

匿名 (未验证) 提交于 2019-12-02 21:35:18

0.描述

/**  * 目标:给字符串列表元素排序;  * 步骤:1.随机生成10对字符串;  * 2.调用sort方法排序;  * 要求:生成的字符串内容不相同;字符可以相同;字符串长度为10以内;  */

1.程序与结果

import java.util.*;  public class CollectionsTest {     /**      * 目标:给字符串列表元素排序;      * 步骤:1.随机生成10对字符串;      * 2.调用sort方法排序;      * 要求:生成的字符串内容不相同;字符可以相同;字符串长度为10以内;      */     public static void main(String[]args){         List list = generateStringList();         sortStringList(list);     }     //实现排序并打印的方法     public static void sortStringList(List<String> list){         System.out.println("排序前的list元素为:"+ Arrays.toString(list.toArray()));         Collections.sort(list);         System.out.println("-----------------------");         System.out.println("排序后的list元素为:"+ Arrays.toString(list.toArray()));     }     //随机生成存在10个字符串的列表     public static List generateStringList(){         List<String> list = new ArrayList<String>();         Random rand = new Random();         for(int i=0;i<10;i++){             String newStr = "";             do {                 int randLen = rand.nextInt(10);                 for (int j = 0; j <= randLen; j++) {                     int randChar = 'a' + rand.nextInt(25);                     newStr += (char) randChar;                 }                 list.add(newStr);             }while(!list.contains(newStr));         }         return list;     } } 
排序前的list元素为:[kcuit, tpoap, jtqj, mpadxu, uoydtjcyf, bk, ej, adk, xhjhwm, kedhgs] ----------------------- 排序后的list元素为:[adk, bk, ej, jtqj, kcuit, kedhgs, mpadxu, tpoap, uoydtjcyf, xhjhwm]  Process finished with exit code 0

2.改进

上面的方法生成的随机字符串只包括了小写字母;
我们希望加上数字和大写字母。

import java.util.*;  public class CollectionsTest2 {     /**      * 改进:生成的字符串当中,还应当包括大写字母和数字      */     public static void main(String[]args){         List list = generateStringList();         sortStringList(list);     }     //实现排序并打印的方法     public static void sortStringList(List<String> list){         System.out.println("排序前的list元素为:"+ Arrays.toString(list.toArray()));         Collections.sort(list);         System.out.println("-----------------------");         System.out.println("排序后的list元素为:"+ Arrays.toString(list.toArray()));     }     //随机生成存在10个字符串的列表     public static List generateStringList(){         List<String> list = new ArrayList<String>();         Random rand = new Random();         for(int i=0;i<10;i++){             String newStr = "";             do {                 int randLen = rand.nextInt(10);                 for (int j = 0; j <= randLen; j++) {                     int randCharType = rand.nextInt(3);//随机0,1,2分别表示小写,大写和数字                     int randChar;//存储随机生成的字符                     switch(randCharType){                         case 0://小写                             randChar = 'a' + rand.nextInt(25);                             newStr += (char) randChar;                             break;                         case 1://大写                             randChar = 'A' + rand.nextInt(25);                             newStr += (char) randChar;                             break;                         case 2://数字                             randChar = '0' + rand.nextInt(9);                             newStr += (char) randChar;                             break;                     }                 }                 list.add(newStr);             }while(!list.contains(newStr));         }         return list;     } } 
排序前的list元素为:[w, rOG6C8L, 3L5a0, 25Eso47j8Q, Pad, 3, e3m1, 5Lc, j7RBbwE, KcNvXJP] ----------------------- 排序后的list元素为:[25Eso47j8Q, 3, 3L5a0, 5Lc, KcNvXJP, Pad, e3m1, j7RBbwE, rOG6C8L, w]  Process finished with exit code 0

其实上述随机生成大小写字母和数字的实现方法还有其他选择;
比如将0-9a-zA-Z放到数组或者字符串中,随机生成0-61的整数也可以实现。

文章来源: https://blog.csdn.net/qq_32760017/article/details/90315018
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!