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

写得不好,求推荐更快捷方便的生成随机字符串的方法

package com.imooc.collection;

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

public class CollectionsTest {
    /**
	 * 练习题:利用Collections.sort()方法对泛型为String的List进行排序
	 * 要求:
	 * 1.创建完List<String>之后,往其中添加10条随机的字符串
	 * 2.每条字符串的长度为10以内
	 * 3.每条字符串的每个字符都为随机生成的字符,字符可以重复
	 * 4.每条随机字符串不可重复
	 * @param args
	 */
	public void testRandomStringSort(){
		List<String> strList = new ArrayList<String>();
		Random random = new Random();
		//包含0-9A-Za-z全部字符的字符串
		String allChar ="0123456789" 
				+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
				+ "abcdefghijklmnopqrstuvwxyz";
		int strlen;	//字符串长度
		String str;	//生成的随机字符串
		for(int i = 0 ; i < 10 ; i++){
			do{
				strlen = random.nextInt(10)+1;
				//nextInt(k)返回的是区间[0,k)内的整数,所以要用nextInt(k)+1,返回的就是[1,10]的整数
				str = "";
				//通过字符串方法charAt(),返回在allChar字符串中随机位置(0-61)上的字符
				for(int j = 0 ; j < strlen ; j++){
					str = str +allChar.charAt(random.nextInt(61));
				}
			}while(strList.contains(str));
			strList.add(str);
			System.out.println("添加字符串:" + str);
		}
		System.out.println("------------排序前----------");
		for(String s : strList){
			System.out.println("字符串:" + s);
		}
		Collections.sort(strList);
		System.out.println("------------排序后----------");
		for(String s : strList){
			System.out.println("字符串:" + s);
		}
	}
	
	public static void main(String[] args) {
		CollectionsTest ct = new CollectionsTest();
                ct.testRandomStringSort();
	}

}


提问者:biofool_0001 2015-03-26 14:59

个回答

  • 高小琥
    2015-05-26 23:56:15

    字符串不仅仅包括数字和大小写字母吧?@#¥%!这也是一个字符串吧?

  • 葑尘
    2015-04-02 16:39:29

    我觉得 写的 还不错啊,我就没写出来

  • 李立帆
    2015-03-26 22:40:27

    各位不好意思,链接已改为:http://yun.baidu.com/share/link?shareid=3414386292&uk=3610898735