Java 2D Int Arraylist

时间:2014-10-20 20:22:58

标签: java arraylist

我不太明白第二个声明有什么问题。

// Compiles fine
ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();

// error (Unexpected type, expected -reference ,found :int)
ArrayList<ArrayList<int>> intarray = new ArrayList<ArrayList<int>>();

5 个答案:

答案 0 :(得分:3)

仿制药的工作方式很简单。 List的标题看起来有点像这样:

public interface List<T>

T有些Object。但是,int不是Object的子类。这是一个原始的。那么我们如何解决这个问题呢?我们使用IntegerIntegerint的包装类。这允许我们在int中使用List值,因为当我们添加它们时,它们会自动加入Integer

原始类型实际上是在Java 10中计划弃用的。取自维基百科:

  

有人猜测要删除原始数据类型,以及转向64位可寻址数组,以便在2018年左右支持大数据集。

只是关于您的代码的注释

在Java中,惯例是使用最通用类型进行声明,使用最具体的具体类进行定义。例如:

List myList;
// List is the interface type. This is as generic as we can go realistically.

myList = new ArrayList();
// This is a specific, concrete type.

这意味着如果您想使用其他类型的List,则无需更改大部分代码。你可以换掉实现。

额外阅读

答案 1 :(得分:3)

ArrayListList<T>的一个实现,你的问题是你正在尝试创建一个int的arraylist,因为int不是一个对象,所以它是不可能的。使用Integer将解决您的问题。

ArrayList<ArrayList<Integer>> intarray = new ArrayList<ArrayList<Integer>>();

答案 2 :(得分:1)

您只能制作对象列表。 int是原始类型。

尝试使用:

ArrayList<ArrayList<Integer>> intarray = new ArrayList<ArrayList<Integer>>();

答案 3 :(得分:0)

您必须创建ArrayList<Integer>而不是ArrayList<int> 一个类(在您的情况下为Arraylist)可以是CLASS类型(Integer

答案 4 :(得分:0)

ArrayList不会将基本类型作为参数。它只接受你应该使用的对象类型:

ArrayList<ArrayList<Integer>> intArray = new ArrayList<ArrayList<Integer>>();