如何在Java中创建多维ArrayList?

And*_*ndy 30 java arraylist multidimensional-array

无论如何我对ArrayLists还是比较陌生的但是我需要它们用于这个项目我正在这样做,如果你们能帮助我的话我会非常感激!
基本上,我需要创建一个多维的ArrayList来保存String值.我知道怎么用标准数组来做这个,public static String[][] array = {{}}但是这并不好,因为我不知道我的数组的大小,我所知道的是它将有多少维度.

所以,如果你们知道如何制作一个"具有2/+尺寸的动态可调整大小的阵列",请告诉我.

谢谢提前,
安迪

编辑/更新


也许使用变量调整大小或定义标准数组会更容易?但我不知道?
使用我对ArrayList的原始想法可能更容易......我只需要一个完整的示例代码来创建2D ArrayList并在不知道索引的情况下将这些示例值添加到两个维度.

Jac*_*maw 31

ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();

根据您的要求,您可以使用类似下面的Generic类来简化访问:

import java.util.ArrayList;

class TwoDimentionalArrayList<T> extends ArrayList<ArrayList<T>> {
    public void addToInnerArray(int index, T element) {
        while (index >= this.size()) {
            this.add(new ArrayList<T>());
        }
        this.get(index).add(element);
    }

    public void addToInnerArray(int index, int index2, T element) {
        while (index >= this.size()) {
            this.add(new ArrayList<T>());
        }

        ArrayList<T> inner = this.get(index);
        while (index2 >= inner.size()) {
            inner.add(null);
        }

        inner.set(index2, element);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该参数化内部ArrayList. (2认同)

Sha*_*ing 14

如果您被允许使用预定义的Java类,您可以执行以下操作:

private static ArrayList<ArrayList<String>> biDemArrList = new ArrayList<ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)

然后你可以添加新元素,例如:

ArrayList<String> temp = new ArrayList<String>(); // added () 
temp.add("Hello world.");
biDemArrList.add(temp);
Run Code Online (Sandbox Code Playgroud)

希望你能理解我的意思和发生的事情.此外,您还需要导入java.util.ArrayList; 为此,如果您正在使用Java类.


Aks*_*ani 6

一旦我需要二维 arrayList 并使用 List 和 ArrayList 创建,代码如下:

import java.util.*;

public class ArrayListMatrix {

    public static void main(String args[]){

        List<ArrayList<Integer>> a = new ArrayList<>();

        ArrayList<Integer> a1 = new ArrayList<Integer>();
        ArrayList<Integer> a2 = new ArrayList<Integer>();
        ArrayList<Integer> a3 = new ArrayList<Integer>();


        a1.add(1);
        a1.add(2);
        a1.add(3);

        a2.add(4);
        a2.add(5);
        a2.add(6);

        a3.add(7);
        a3.add(8);
        a3.add(9);

        a.add(a1);
        a.add(a2);
        a.add(a3);


        for(ArrayList obj:a){

            ArrayList<Integer> temp = obj;

            for(Integer job : temp){
                System.out.print(job+" ");
            }
            System.out.println();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 2 3

4 5 6

7 8 9

来源:https : //www.codepuran.com/java/2d-matrix-arraylist-collection-class-java/