You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Collections.sort()排序存储names.txt数据的ArrayList无效,求排查

问题分析与解决方法

你的代码核心问题出在ArrayList的作用域和操作时机上:

  • 你在while循环内部每次都新建一个ArrayList,这意味着每次循环只把当前读取的单个名称存入列表,对只有一个元素的列表调用Collections.sort()完全起不到排序作用,而且之前读取的名称根本没有被保留下来。
  • 你在每次读取一行后就立刻打印列表,这导致输出的始终是单个元素的列表,自然看不到排序效果。

修正后的代码如下:

private static void Excerise04(String fname) throws FileNotFoundException {
    Scanner filescanner = new Scanner(new File(fname));
    // 将ArrayList的创建移到循环外,确保能存储所有名称
    ArrayList<String> nameList = new ArrayList<>();
    while (filescanner.hasNext()) {
        String line = filescanner.next();
        nameList.add(line);
    }
    // 所有名称读取完成后,统一排序
    Collections.sort(nameList);
    // 打印排序后的完整列表
    System.out.println(nameList);
}

修改说明:

  • 把ArrayList的初始化移到while循环外部,这样整个循环过程中只会创建一个列表,用来累积所有从文件中读取的名称。
  • 把Collections.sort()和System.out.println()移到循环结束后,等所有名称都存入列表再执行排序和打印操作,这样就能得到按字母顺序排序后的完整名称列表。

内容的提问来源于stack exchange,提问作者user18912930

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:02:20