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

Java读取文件中嵌套列表并提取内部数字的实现方法

提取嵌套列表中的数字:两种实用方案

你已经用File和Scanner完成了文件读取的第一步,接下来咱们可以通过两种方式来提取那些内层列表里的数字,根据你的场景选就行:

方案一:纯字符串处理(无额外依赖)

如果你的数据格式很规整(没有多余空格或特殊字符),直接做字符串清洗+分割就够了,步骤很简单:

  1. 把文件内容读取成一个完整的字符串
  2. 去掉所有的方括号[和]
  3. 用逗号,分割成单个数字的字符串数组
  4. 把每个字符串转成整数

给你写个完整的代码示例:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class NestedListParser {
    public static void main(String[] args) {
        try {
            File f = new File("route.txt");
            Scanner scanner = new Scanner(f);
            // 读取整个文件内容(假设文件里只有那一段嵌套列表)
            String content = scanner.useDelimiter("\\Z").next();
            scanner.close();

            // 去掉所有方括号
            String cleanedContent = content.replaceAll("[\\[\\]]", "");
            // 按逗号分割成数字字符串
            String[] numberStrings = cleanedContent.split(",");

            // 遍历并处理每个数字
            for (String numStr : numberStrings) {
                // 去掉可能的空格(如果有的话)
                numStr = numStr.trim();
                if (!numStr.isEmpty()) {
                    int number = Integer.parseInt(numStr);
                    // 这里就可以用你的数字做操作了
                    System.out.println("提取到数字:" + number);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            System.err.println("格式错误,无法转换为整数:" + e.getMessage());
        }
    }
}

方案二:用JSON解析库(更稳健)

如果你的嵌套结构可能有变化,或者想更优雅地处理层级关系,用JSON解析库会更靠谱,比如Google的Gson或者Jackson。这里以Gson为例:

  1. 先添加Gson依赖(如果用Maven的话,在pom.xml里加):
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 用最新版本就行 -->
</dependency>
  1. 把文件内容转换成嵌套的List结构,然后逐层遍历提取数字:
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Scanner;

public class JsonNestedParser {
    public static void main(String[] args) {
        try {
            File f = new File("route.txt");
            Scanner scanner = new Scanner(f);
            String content = scanner.useDelimiter("\\Z").next();
            scanner.close();

            Gson gson = new Gson();
            // 定义嵌套列表的类型:外层是List,每个元素是List<List<Integer>>
            TypeToken<List<List<List<Integer>>>> typeToken = new TypeToken<>() {};
            List<List<List<Integer>>> nestedLists = gson.fromJson(content, typeToken.getType());

            // 逐层遍历提取数字
            for (List<List<Integer>> middleList : nestedLists) {
                for (List<Integer> innerList : middleList) {
                    for (int number : innerList) {
                        // 这里使用你的数字
                        System.out.println("提取到数字:" + number);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

这个方案的好处是能保留原有的层级结构,如果之后需要用到不同层级的列表,直接操作对应的List就行,比纯字符串处理更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:32:50