Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中声明GenricArrayList(2d ArrayList)的ArrayList?_Java_Generics_Arraylist_Multidimensional Array_Declaration - Fatal编程技术网

如何在java中声明GenricArrayList(2d ArrayList)的ArrayList?

如何在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

所以我一直在尝试创建一个ArrayList的ArrayList泛型。基本上我有一个名为Color的泛型类(在运行时接受整数/长/短值)。现在我想在一个名为Picture的类中创建一个类型为“Color”的2d数组列表。我已经得到了构造函数和arrayList的声明。但我不明白的是,为什么ArrayList的大小最终是0,即使我声明它的大小大于0。更多关于这个代码后

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;rpic.set(r,newarraylist您误解了ArrayList/那个构造函数

ArrayList有两个大小类似的属性:

容量 这个数字几乎没什么意思,也没什么意义。这是一个实现细节:容量为10的数组可以让您在不调整内部数组大小的情况下向其中添加多达10个元素(什么是内部数组大小调整?一个..内部实现细节。我告诉过您这基本上不相关)。如果您尝试添加第11个,则效果很好,作为其中的一部分,容量会自动增加一点(如果内存可用,可能会增加到15)。在内部,ArrayList有一个包含数据的数组(因此而得名),并且如果您试图将一个项目添加到具有容量的arraylist中,则在内部创建一个新的、更大的数组,将旧数组复制到新数组,然后新数组取代数据存储,旧数组将被丢弃。这就是容量的含义

几乎没有什么方法可以引起你的注意,你也很少需要在意

大小 这是指列表中条目的实际数量。它必须小于或等于
容量


新建ArrayList(10)
生成一个容量为10、大小为0的ArrayList。您不能(轻松地)生成一个包含X个空指针的ArrayList,通常您也不想这样做。例如,在这个简单的例子中,您只需要[A]替换
r
arraylist,所以我尝试创建一个2d颜色arraylist,这是一个泛型类。你的意思是它是一个上界,我尝试创建一个2d颜色的子类arraylist。我可以将Picture类设为泛型,并执行类似
arraylist pic;
的操作,但这会导致其他问题r我的其他类。除了
Color
,还有其他方法吗?哦,我太笨了,忘了这个。我只是设置了大小/容量,但实际上还没有添加任何内容,我在考虑数组-因为当你声明数组的大小时,你可以在添加任何内容之前访问它。