繁体   English   中英

Java 2D Int数组列表

[英]Java 2D Int 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>>();

泛型的工作方式很简单。 List的标题看起来像这样:

public interface List<T>

其中T是一些Object 但是, int不是Object的子类。 这是原始的。 那么我们如何解决这个问题? 我们使用Integer Integerint的包装器类。 这使我们可以在List使用int值,因为添加它们时,它们会自动装箱到Integer

实际上,已计划在Java 10中弃用基本类型。取自Wikipedia:

人们猜测将删除原始数据类型,并转向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 ,则无需更改太多代码。 您可以换掉实现。

额外阅读

ArrayListList<T>的实现,您的问题是您试图创建一个int的arraylist,这是不可能的,因为int不是对象。 使用Integer将解决您的问题。

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

您只能创建对象列表。 int是原始类型。

尝试使用:

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

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

ArrayList不会将原始类型作为参数。 它仅接受您应该使用的对象类型:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM