我正在尝试运行一个非常简单的程序,而且我仍然坚持声明嵌套列表和地图的基础知识。
我正在开发一个项目,要求我将多项式存储到ArrayList中。 每个多项式都被命名,所以我想要一个键/值映射来将多项式的名称(1,2,3等)作为键,将实际的多项式作为值。
现在实际多项式也需要键值,因为该程序的性质要求指数与系数相关联。
所以例如我需要一个多项式的ArrayList,比如说第一个是简单的:
多项式1:2x ^ 3
数组列表包含整个事物作为地图,并且地图包含键:多项式1和值:是一个Map ...其中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>>
那么我该如何做到这一点,或者我只是以错误的方式解决这个问题?
答案 0 :(得分: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或更高版本,则可以使用generic type inference来保存一些输入内容:
Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>();
答案 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>();
有了这个,您可以将数字放在polynomailNumbers Map中,然后在polynomialIndex中使用它。