Java-慕课网例子-对列表元素排序
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的整数也可以实现。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
