Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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-如何从包含泛型数组的ArrayList访问值_Java_Arrays_Arraylist - Fatal编程技术网

Java-如何从包含泛型数组的ArrayList访问值

Java-如何从包含泛型数组的ArrayList访问值,java,arrays,arraylist,Java,Arrays,Arraylist,我有一个包含不同类型数组的通用ArrayList。我需要遍历内部数组的每个元素并访问它们。但是,由于使用泛型,我不确定如何访问内部数组元素 一旦我从ArrayList的第一个循环中获得了数组,我如何访问每个元素 这是我所拥有内容的简化版本: publicstaticvoidmain(字符串[]args){ ArrayList arrList=新的ArrayList(); 整数[]a1={1,2,3,4}; 字符串[]a2={“a”、“b”、“c”}; 双[]a3={4.0,5.0,6.0}; 增

我有一个包含不同类型数组的通用ArrayList。我需要遍历内部数组的每个元素并访问它们。但是,由于使用泛型,我不确定如何访问内部数组元素

一旦我从ArrayList的第一个循环中获得了数组,我如何访问每个元素

这是我所拥有内容的简化版本:

publicstaticvoidmain(字符串[]args){
ArrayList arrList=新的ArrayList();
整数[]a1={1,2,3,4};
字符串[]a2={“a”、“b”、“c”};
双[]a3={4.0,5.0,6.0};
增加(a1);
增加(a2);
增加(a3);
打印列表(arrList);
}
公共静态无效打印列表(ArrayList arrList){
对于(E arr:arrList){
对于(E elm:arr){
系统输出打印LN(elm);
}
}
}

问题在于,在方法体中,编译器不知道
E
是数组
E
可以是字符串、整数或其他任何形式。嵌套循环是不可能的,因为它们不适用于这些情况

您可以在方法声明中使用
ArrayList
而不是
ArrayList
,使此方法仅应用于数组。当我们这样做时,
E
解析为
Object
,而不是
Object[]

public static <E> void printList(ArrayList<E[]> arrList) {
    for (E[] arr : arrList) {
        for (E elm : arr) {
            System.out.println(elm);
        }

    }
}


便于快速打印多维数组。

if(arr.getClass().isArray()){for(Object o:(Object[])arr){
补遗:有
数组35; deepToString
来帮助打印多维数组。我不会假设有泛型数组。泛型可以是自己的数组。我更喜欢某种
if(arr.getClass().isArray())
handling@spi我之所以这样写,是因为我认为OP的目的是创建一个方法,可以打印数组的数组列表,而不是任何旧的数组列表。只是好奇。添加整数[]、字符串[]和双精度[],类型的初始ArrayList必须声明为
ArrayList
对吗?或者是否有其他方法添加它?@BlackPearl您可以使用的最具体的类型是
Object[]
,但您总是可以使用不太具体的类型,即
Object
。但是,对于第一段代码,必须将其指定为Object[]是吗?还是我遗漏了什么?
public static void printList(ArrayList<Object[]> arrList) {
    for (Object[] arr : arrList) {
        for (Object elm : arr) {
            System.out.println(elm);
        }
    }
}
System.out.println(Arrays.deepToString(arrList.toArray()));