问答详情
源自: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;

/**
 * 将要完成:
 * 1、通过Collections.sort()方法,对Integer泛型的List进行排序
 * 2、对String泛型的 List进行排序
 * 3、对其他类型的泛型的例子进行排序,一Student类型为例
 * @author Administrator
 *
 */

public class CollectionsTest2 {

	public Random random = new Random();
	
	
	/**
	 * 创建完List之后往其中添加10条随机字符串
	 * 每条字符串的长度为10以内的随机整数
	 * 每条字符串的每个字符都是随机生成的,可以重复
	 * 每条随机字符串不可重复
	 * @param args
	 */
	
	public void testSort3(){
		List<String> stringList = new ArrayList<String>();
		int i = 0;
		do{
			String str = getRandomString();
			if((str==null)||(stringList.contains(str)))
				continue;
			i++;
			stringList.add(str);
			System.out.println("成功添加字符串 :"+str);
		}while(i<9);
		
		System.out.println("-----------排序前--------------");
		for (String string : stringList) {
			System.out.println("字符串:"+string);
		}
		
		Collections.sort(stringList);
		System.out.println("-----------排序后--------------");
		for (String string : stringList) {
			System.out.println("字符串:"+string);
		}
		
		
	}
	
	/**
	 * 生成一个长度随机随机字符串
	 * @param args
	 */
	public String getRandomString(){
		int length = random.nextInt(10);
		//sb用来存储每一个字符串
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			//num=0时随机生成A-Z;当num=1时随机生成a-z;当num=2时随机生成0-9
			int num = random.nextInt(3);
			long result =0;
			switch (num) {
			case 0:
				result = Math.round(Math.random()*25+65);
				sb.append(String.valueOf(result));
				break;
			case 1:
				result = Math.round(Math.random()*25+97);
				sb.append(String.valueOf(result));
				
				break;
			case 2:
				sb.append(random.nextInt(10)); 	
				break;

			default:
				break;
			}
		}
		return sb.toString();
		
	}
	
public static void main(String[] args) {
		CollectionsTest ct = new CollectionsTest();
		ct.testSort3();
	}
}


提问者:田同学 2017-05-03 20:34

个回答

  • Damon__huang
    2017-05-04 08:41:10
    已采纳

    int length = random.nextInt(10);

    随机数的范围是[0,10),前闭后开。

    当length取值为0时,new StringBuffer().toString()的值就是空值""。