本帖最后由 zhang87306896 于 2012-10-28 20:04:55 编辑

解决方案 »

  1.   

    你的代码中这儿有点问题,没有考虑泛型:
    List list=new ArrayList();   应该改成,List <String> list=new ArrayList<String>();
    这样写不会输出输出排序后字符串的结果,但是并不会输出排序后的结果,你调用排序方法, 你没有实现排序方法,
      

  2.   


    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Random;/**
     * 读取TXT文件里的十万行字符串,按照字典ABCD的顺序排序,然后输出排序后结果。
     * 
     * 要求速度越快越好,按照速度给分。
     */
    public class Demo5 { public static void main(String[] args) throws Exception {
    String fileName = "./text.txt";// 定义一个文件路径
    writer(fileName, 100000);// 往文件中写10W条字符串
    List<String> list = reader(fileName);// 将文件中的所有字符串读取到List中
    long start = System.currentTimeMillis();// 排序开始时间
    Collections.sort(list);// 对List集合中的字符串排序
    long end = System.currentTimeMillis();// 排序结束时间
    System.out.println("排序用时:" + (end - start) + "毫秒");
    } /**
     * 获取一定长度的随机字符串
     * 
     * @param len
     *            字符串长度
     * @return 返回字符串
     */
    public static String getStr(int len) {
    Random r = new Random();
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < len; i++) {// 获取len长度的随机字符串
    buf.append((char) (r.nextInt(26) + 'A'));
    }
    return buf.toString();
    } /**
     * 给定一个文件名和写入的行数,将随机字符串写入到文件中
     * 
     * @param fileName
     *            文件名
     * @param len
     *            写入的行数
     */
    public static void writer(String fileName, int len) {
    PrintWriter out = null;
    try {
    out = new PrintWriter(fileName);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    for (int i = 0; i < len; i++) {
    out.println(getStr(30));// 将随机字符串写入文件中
    }
    out.close();
    } /**
     * 将给定的文件读入集合中,每一行一条记录
     * 
     * @param fileName
     *            文件名
     * @return 字符串集合
     */
    public static List<String> reader(String fileName) {
    List<String> list = new ArrayList<String>();
    BufferedReader read = null;
    try {
    read = new BufferedReader(new InputStreamReader(
    new FileInputStream(fileName)));
    String temp = null;
    while ((temp = read.readLine()) != null) {
    list.add(temp);// 将文件中的字符串读取到list中
    }
    read.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return list;
    }
    }
    排序用时:119毫秒