手记

JAVA第三季6-5练习 随机生成字符串并排序

package com.imooc.collection;

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

/***

 * 利用Collections.sort()方法对泛型为String的List进行排序

 * 1.创建List<String>之后,往其中添加十条随机字符串

 * 2.每条字符串的长度为10以内的随机整数

 * 3.每条字符串的每个字符都为随机生成的字符,字符可以重复

 * 4.每条随机字符串不可重复

 */
public class TestSort {
	
	Random random =new Random();
	public void testSort() {
		List<String> stringList = new ArrayList<String>();
		String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		for(int i=0;i<10;i++){//i为字符串个数
			StringBuilder sbu = new StringBuilder();
			do {
				int j;//j为字符串长度
				do{
					j= random.nextInt(10);
				}while(j==0);//保证字符串不为空
				for( int k=0;k<j;k++) {
					int l = str.length();//可添加的字符串str的长度
					int q = random.nextInt(l);//q为str任意位置的元素
					sbu.append(str.charAt(q));//将str中第q位置的元素加到sbu对象的末尾
				}
				
			}while(stringList.contains(sbu));//保证生成的字符串不重复
			stringList.add(sbu.toString());//将新生成的stu转换为String对象并加到stringList末尾
		}
		System.out.println("--------排序前----------");
		for (String string : stringList) {//foreach方法遍历stringList中的元素
			System.out.println("添加字符串:"+string);
		}
		System.out.println("--------排序后----------");
		Collections.sort(stringList);//调用Collection.sort()方法对stringList进行排序
		int n=0;
		for (String string : stringList) {
			n++;
			System.out.println("排序后第"+n+"个字符串"+":"+string);
		}
	
	
	}

	public static void main(String[] args) {
		
		TestSort ts = new TestSort();
		ts.testSort();
	}

}

输出结果:

--------排序前----------

添加字符串:oelSqQwRz

添加字符串:D6FhzX3U

添加字符串:h7

添加字符串:5

添加字符串:71sE

添加字符串:A

添加字符串:A015nGbi

添加字符串:wkCk

添加字符串:sPNHjzvWL

添加字符串:X

--------排序后----------

排序后第1个字符串:5

排序后第2个字符串:71sE

排序后第3个字符串:A

排序后第4个字符串:A015nGbi

排序后第5个字符串:D6FhzX3U

排序后第6个字符串:X

排序后第7个字符串:h7

排序后第8个字符串:oelSqQwRz

排序后第9个字符串:sPNHjzvWL

排序后第10个字符串:wkCk

————————————————————————————————————————————————————————

参考了一些其他同学的,第一次小练习。

光看和自己写还是不一样。


一些总结:

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

确保生成随机数不重复,使用do while( .contains() )循环。

class类下面要有属性和方法,具体代码要写在具体方法里,不能直接在类下写,我这第一次就犯了这样愚蠢的错误,导致编译器报语法错误还找不到,耽误了好久。。


继续努力吧!

0人推荐
随时随地看视频
慕课网APP