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

如何跳过首行后将文本每2行合并存入ArrayList?

解决文本文件跳过首行后每两行合并存入ArrayList的问题

现有代码的问题

  • 原文件中没有空行,使用split("\\n\\n")无法分割出目标元素
  • 未实现跳过首行的逻辑
  • 没有处理每两行合并的需求

正确实现方案

方案一:基于Apache Commons IO(延续你使用的工具类)

利用FileUtils.readLines()直接读取所有行到列表,跳过首行后按步长遍历拼接:

File file = new File(classLoader.getResource("name.txt").getFile());
// 读取所有行,自动适配不同系统的换行符
List<String> allLines = FileUtils.readLines(file, "UTF-8");
List<String> result = new ArrayList<>();

// 从索引1开始(跳过首行),每次步进2,取相邻两行拼接
for (int i = 1; i < allLines.size(); i += 2) {
    // 原文件数据是成对的,此处可省略越界判断;若数据不确定可添加i+1 < allLines.size()的条件
    String combinedLine = allLines.get(i) + allLines.get(i + 1);
    result.add(combinedLine);
}

方案二:原生Java实现(无需第三方库)

使用BufferedReader逐行读取,跳过首行后交替存储和拼接行:

File file = new File(classLoader.getResource("name.txt").getFile());
List<String> result = new ArrayList<>();

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    // 跳过首行
    reader.readLine();
    String tempLine = null;
    String currentLine;
    
    while ((currentLine = reader.readLine()) != null) {
        if (tempLine == null) {
            // 存储第一行,等待下一行拼接
            tempLine = currentLine;
        } else {
            // 拼接两行并加入结果列表,重置临时变量
            result.add(tempLine + currentLine);
            tempLine = null;
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

验证结果

两种方案最终得到的result列表都符合预期:

["1/name=Arwin2/Age=22","3/name=AJ4/Age = 27","5/name=Anna6/Age = 21","7/name=Avon8/Age = 25","9/name=Atman10/Age = 19"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:15