课后练习,大神帮忙看下还需要怎么优化一下

来源:6-5 应用 Collections.sort() 实现 List 排序

宝慕林65331

2018-01-18 16:28

package com.imooc_collection;


import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

import java.util.Random;

/*

 * 利用Colletions.sort()方法对泛型为String类型的list进行排序版本2:

 * 1、创建List<String>之后,往其中添加十条随机字符串 2、每条字符串的长度为10以内的随机整数

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

 */


public class testSort2 {

private Random random;

private List<String> list;


public testSort2() {

// TODO 自动生成的构造函数存根

random = new Random();

list = new LinkedList<>();

}


// 随机生成字符串方法

public String randomAddString() {

String keySet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

int keyLength = random.nextInt(10);

StringBuffer sbf = new StringBuffer();

for (int i = 0; i <= keyLength; i++) {

int number = random.nextInt(keySet.length());

sbf.append(keySet.charAt(number));

}

return sbf.toString();

}


// 往List中添加随机字符串

public void addList() {

for (int i = 0; i < 10; i++) {

String addStr;

do {

addStr = randomAddString();

} while (list.contains(addStr));

list.add(addStr);

}

System.out.println("——————排序前——————");

Iterator<String> it = list.iterator();

while (it.hasNext()) {

System.out.println("List集合中元素有:\'" + it.next()+"\'");

}

System.out.println("——————排序后——————");

Collections.sort(list);

for (String integer2 : list) {

System.out.println("元素\'" + integer2+"\'");

}

}


public static void main(String[] args) {

testSort2 ts = new testSort2();

ts.addList();

}


}


写回答 关注

2回答

  • 慕姐936777
    2018-03-18 19:09:18

    看一个StringBuffer,优先使用StringBuilder线程不安全性能略高

  • 慕哥5034676
    2018-01-19 22:24:13

    我也是新手,看了你的代码后!1、可以这样来优化

    for(){  //控制生成10条字符串

    do{

    for(){  //控制生成长度10以内的字符串

    }

    }while();

    }

    2、你代码里这地方有点小问题,

    baint number = random.nextInt(keySet.length()-1);才对

    个人意见哈

    清水J

    nextInt()方法随机生成的int值不包含指定值的;用KeySet.length()-1反而会导致最后一个字符永远取不到。

    2018-02-06 16:37:19

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题