如何在java中声明GenricArrayList(2d ArrayList)的ArrayList?
所以我一直在尝试创建一个ArrayList的ArrayList泛型。基本上我有一个名为Color的泛型类(在运行时接受整数/长/短值)。现在我想在一个名为Picture的类中创建一个类型为“Color”的2d数组列表。我已经得到了构造函数和arrayList的声明。但我不明白的是,为什么ArrayList的大小最终是0,即使我声明它的大小大于0。更多关于这个代码后如何在java中声明GenricArrayList(2d ArrayList)的ArrayList?,java,generics,arraylist,multidimensional-array,declaration,Java,Generics,Arraylist,Multidimensional Array,Declaration,所以我一直在尝试创建一个ArrayList的ArrayList泛型。基本上我有一个名为Color的泛型类(在运行时接受整数/长/短值)。现在我想在一个名为Picture的类中创建一个类型为“Color”的2d数组列表。我已经得到了构造函数和arrayList的声明。但我不明白的是,为什么ArrayList的大小最终是0,即使我声明它的大小大于0。更多关于这个代码后 import java.util.ArrayList; public class Picture{ private Ar
import java.util.ArrayList;
public class Picture{
private ArrayList<ArrayList<Color<?>>> pic;
//constructor that takes in height and width of 2d array, and a Color parameter that will be populated in the 2d list
public Picture(int height, int width, Color color){
if((height <= 0) || (width<=0)){
throw new IndexOutOfBoundsException("invalid height and/or width");
}
else{
pic = new ArrayList<ArrayList<Color<?>>>(height);
System.out.println("size of given array: "+ pic.size()); //for error handling purposes
for(int r =0; r< pic.size(); r++ ){
pic.set(r, new ArrayList<Color<?>>(width));
for(int c = 0; c< width; c++){
pic.get(r).set(c, color);
}
}
}
}
}
import java.util.ArrayList;
公开课图片{
专用阵列列表>>(高度);
System.out.println(“给定数组的大小:+pic.size());//用于错误处理目的
对于(int r=0;r pic.set(r,newarraylist您误解了ArrayList/那个构造函数
ArrayList有两个大小类似的属性:
容量
这个数字几乎没什么意思,也没什么意义。这是一个实现细节:容量为10的数组可以让您在不调整内部数组大小的情况下向其中添加多达10个元素(什么是内部数组大小调整?一个..内部实现细节。我告诉过您这基本上不相关)。如果您尝试添加第11个,则效果很好,作为其中的一部分,容量会自动增加一点(如果内存可用,可能会增加到15)。在内部,ArrayList有一个包含数据的数组(因此而得名),并且如果您试图将一个项目添加到具有容量的arraylist中,则在内部创建一个新的、更大的数组,将旧数组复制到新数组,然后新数组取代数据存储,旧数组将被丢弃。这就是容量的含义
几乎没有什么方法可以引起你的注意,你也很少需要在意
大小
这是指列表中条目的实际数量。它必须小于或等于容量
新建ArrayList(10)
生成一个容量为10、大小为0的ArrayList。您不能(轻松地)生成一个包含X个空指针的ArrayList,通常您也不想这样做。例如,在这个简单的例子中,您只需要[A]替换rarraylist,所以我尝试创建一个2d颜色arraylist,这是一个泛型类。你的意思是它是一个上界,我尝试创建一个2d颜色的子类arraylist。我可以将Picture类设为泛型,并执行类似arraylist pic;
的操作,但这会导致其他问题r我的其他类。除了Color
,还有其他方法吗?哦,我太笨了,忘了这个。我只是设置了大小/容量,但实际上还没有添加任何内容,我在考虑数组-因为当你声明数组的大小时,你可以在添加任何内容之前访问它。