Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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_Arraylist - Fatal编程技术网

Java “如何简化多层结构”;“ArrayList”吗;?

Java “如何简化多层结构”;“ArrayList”吗;?,java,arraylist,Java,Arraylist,我想定义许多类型为ArrayList 但这看起来很糟糕 我现在想到的是创建一个如下所示的类 Public class ArrayListMulti{ ArrayList<ArrayList<ArrayList<ArrayList<Integer>>>> ret; public void ArrayListMulti(){ ret = new ArrayList<>(); } public

我想定义许多类型为
ArrayList

但这看起来很糟糕

我现在想到的是创建一个如下所示的类

Public class ArrayListMulti{
    ArrayList<ArrayList<ArrayList<ArrayList<Integer>>>> ret;
    public void ArrayListMulti(){
        ret = new ArrayList<>();
    }
    public ArrayList<ArrayList<ArrayList<ArrayList<Integer>>>> getTheArrayList(){
        return ret;
    }
}
公共类ArrayListMulti{
ArrayList ret;
public void ArrayListMulti(){
ret=新的ArrayList();
}
公共阵列列表getTheArrayList(){
返回ret;
}
}
但是使用这个方法,每次我想要访问
ret
值时,我必须调用
gettheraylist
方法

有没有更简单的方法


提前感谢~

使用多维数组,如3D数组或更多

使用多维数组,如3D数组或更多

您可以扩展
数组列表

公共类ArrayListMulti扩展了ArrayList{}

您可以扩展
ArrayList

公共类ArrayListMulti扩展了ArrayList{}

你真的需要这么深的数组列表吗?如果是这样,您应该考虑为
ArrayListMulti
类提供方便的API。例如,您可以添加如下方法:

public List<List<List<Integer>>> get(int i) {
    return ret.get(i);
}

public List<List<Integer>> get(int i, int j) {
    return ret.get(i).get(j);
}

...
公共列表获取(int i){
返回ret.get(i);
}
公共列表获取(inti,intj){
返回ret.get(i).get(j);
}
...
等等。(不要忘记检查嵌套列表是否为空。)


还有一个小技巧:在定义类字段时使用接口,而不是类(在您的情况下,
List>ret
。如果您想更改
List
接口的实现(例如,将
ArrayList
替换为
LinkedList
),它将使您的代码更加健壮.

您真的需要这么深的数组列表吗?如果需要,您应该考虑为您的
ArrayListMulti
类提供方便的API。例如,您可以添加如下方法:

public List<List<List<Integer>>> get(int i) {
    return ret.get(i);
}

public List<List<Integer>> get(int i, int j) {
    return ret.get(i).get(j);
}

...
公共列表获取(int i){
返回ret.get(i);
}
公共列表获取(inti,intj){
返回ret.get(i).get(j);
}
...
等等。(别忘了检查嵌套列表是否为空。)


还有一个小技巧:在定义类字段时使用接口,而不是类(在您的例子中是
List>ret
。如果您想更改
List
接口的实现(例如,将
ArrayList
替换为
LinkedList
)。

int[]arr=new int[10][4][3];int[]arr=new int[10][4][3];取决于您的用例。如果您将其用作矩阵或图形/树,则有专用java库,如commons math等。这取决于您的用例。如果您将其用作矩阵或图形/树,则有专用java库,如commons math等。