如何在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>>
那么我该怎么做呢?还是我只是走错了路
# 1 楼答案
这是不正确的:
映射需要有两个参数,而嵌套映射
Map<Integer>
只有一个参数。我想你在寻找这样的东西:或者最好分开做
有了这个,你可以把数字放在多项式映射中,然后在多项式索引中使用它
# 2 楼答案
无法实例化} 是一个接口(它没有构造函数)。您需要使用像^{} 这样的具体类型:
new Map<String, Map<Integer, Integer>>()
,因为^{此外,如果您使用的是Java 7或更高版本,则可以使用generic type inference来保存一些输入: