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的整数也可以实现。
转载请标明出处:Java-慕课网例子-对列表元素排序
文章来源: https://blog.csdn.net/qq_32760017/article/details/90315018