1

我正在尝试运行一个非常简单的程序,并且我坚持声明嵌套列表和映射的基础知识。

我正在做一个项目,该项目需要我将多项式存储到 ArrayList 中。每个多项式都被命名,所以我想要一个键/值映射来提取多项式的名称(1、2、3 等)作为键,并将实际多项式作为值。

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

因此,例如我需要一个多项式的 ArrayList,比如说第一个很简单:

多项式 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>>

那么我该怎么做呢,还是我只是以错误的方式去做呢?

4

2 回答 2

2

您不能实例化new Map<String, Map<Integer, Integer>>(),因为它java.util.Map是一个接口(它没有构造函数)。您需要使用具体类型,例如java.util.HashMap

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

此外,如果您使用的是 Java 7 或更高版本,则可以使用泛型类型推断来节省一些输入:

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>();
于 2013-07-11T06:21:43.597 回答
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>();

有了这个,你可以把数字放在 polynomailNumbers 映射中,然后在 polynomialIndex 中使用它。

于 2013-07-11T06:08:24.600 回答