有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中正确嵌套多个ArrayList/Maps?

我正在尝试运行一个非常简单的程序,我被困在声明嵌套列表和映射的基础上

我正在做一个项目,需要将多项式存储到ArrayList中。 每个多项式都有名称,因此我需要一个键/值映射,将多项式的名称(1、2、3等)作为键,将实际多项式作为值

现在实际的多项式也需要键值,因为这个程序的本质要求指数与系数相关联

例如,我需要一个多项式数组列表,假设第一个是一个简单的:

多项式1:2x^3

数组列表包含作为映射的整个内容,映射包含键:多项式1和值:是映射。。。其中2和3为键/值

下面是我的代码,但我不是100%了解如何格式化这种嵌套逻辑

public static void main(String[] args) throws IOException{
        ArrayList<Map> polynomialArray = new ArrayList<Map>();
        Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>();
        String filename = "polynomials.txt";
        Scanner file = new Scanner(new File(filename));

        for(int i = 0; file.hasNextLine(); i++){
            //this will eventually scan polynomials out of a file and do stuff

        }

编辑: 已更新映射中的键/值,仍然存在问题

上面的代码给出了以下错误:

Cannot instantiate the type Map<String,Map<Integer,Integer>>

那么我该怎么做呢?还是我只是走错了路


共 (2) 个答案

  1. # 1 楼答案

    这是不正确的:

    Map<String, Map<Integer>> polynomialIndex = new Map<String, Map<Integer>>();
    

    映射需要有两个参数,而嵌套映射Map<Integer>只有一个参数。我想你在寻找这样的东西:

    Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>();
    

    或者最好分开做

    Map<String, Map> polynomialIndex = new Map<String, Map>();
    Map<Integer, Integer> polynomialNumbers = new Map<Integer, Integer>();
    

    有了这个,你可以把数字放在多项式映射中,然后在多项式索引中使用它

  2. # 2 楼答案

    无法实例化new Map<String, Map<Integer, Integer>>(),因为^{}是一个接口(它没有构造函数)。您需要使用像^{}这样的具体类型:

    Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<String, Map<Integer, Integer>>();
    

    此外,如果您使用的是Java 7或更高版本,则可以使用generic type inference来保存一些输入:

    Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>();