Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
如何使ArrayList在java中充当二维数组?_Java_Arrays_Arraylist - Fatal编程技术网

如何使ArrayList在java中充当二维数组?

如何使ArrayList在java中充当二维数组?,java,arrays,arraylist,Java,Arrays,Arraylist,我想让java中的arrayList对象作为二维数组工作。我的问题是如何从arrayList中访问特定维度的值 在二维数组中,如果我想访问值,那么它可以是m[i][j] 但是在arraylist中,我如何才能做到这一点呢?您的意思是类似于列表中的列表 可能有点像 List<List<...>> twoDList = new ArrayList<>(); 你是说类似于列表中的列表 可能有点像 List<List<...>> twoDLi

我想让java中的arrayList对象作为二维数组工作。我的问题是如何从arrayList中访问特定维度的值

在二维数组中,如果我想访问值,那么它可以是m[i][j]


但是在arraylist中,我如何才能做到这一点呢?

您的意思是类似于
列表中的
列表

可能有点像

List<List<...>> twoDList = new ArrayList<>();

你是说类似于
列表中的
列表

可能有点像

List<List<...>> twoDList = new ArrayList<>();

记忆在这里是一个重要的考虑因素


可以接受使用一维容器对二维(或更高维)阵列建模。(微软的COM的变体SaaFiReX是这样工作的)但是,如果元素的数量大,仔细考虑这个问题;特别是当容器分配连续内存块时。在这里,使用类似
List的内存是一个重要的考虑因素

可以接受使用一维容器对二维(或更高维)阵列建模。(微软的COM的变体SaaFiReX是这样工作的)但是,如果元素的数量大,仔细考虑这个问题;特别是当容器分配连续内存块时。使用类似于
List的东西
编辑:

虽然如果您尝试使用数字索引(例如,每个列表),确实可以使用映射,如下所示:

Map<Integer, List<YourObject>> map = new HashMap<Integer, List<YourObject>>();
map.put(0, new ArrayList<YourObject>());
map.put(5, new ArrayList<YourObject>());
map.get(0).add(new YourObject("Hello"));
map.get(5).add(new YourObject("World"));

for(Integer integer : map.keySet())
{
    for(YourObject yourObject : map.get(integer))
    {
         yourObject.print(); //example method
         System.out.println(" ");
    }
}
显然,您不需要使用整数作为泛型类型参数,这只是一个占位符类型

编辑:

虽然如果您尝试使用数字索引(例如,每个列表),确实可以使用映射,如下所示:

Map<Integer, List<YourObject>> map = new HashMap<Integer, List<YourObject>>();
map.put(0, new ArrayList<YourObject>());
map.put(5, new ArrayList<YourObject>());
map.get(0).add(new YourObject("Hello"));
map.get(5).add(new YourObject("World"));

for(Integer integer : map.keySet())
{
    for(YourObject yourObject : map.get(integer))
    {
         yourObject.print(); //example method
         System.out.println(" ");
    }
}

显然,您不需要使用整数作为泛型类型参数,这只是一种占位符类型。

arraylist不是生成二维数组的对象。但是,您仍然可以使用它: 您可以使用:

new ArrayList<ArrayList<Object>>; //or
new ArrayList<Object[]>; 
newarraylist//或
新ArrayList;

但是您应该实现自己的矩阵类,因为您可能需要进行一些检查,并且函数
get(int row,int column)
将非常酷数组列表不是制作二维数组的对象。但是,您仍然可以使用它: 您可以使用:

new ArrayList<ArrayList<Object>>; //or
new ArrayList<Object[]>; 
newarraylist//或
新ArrayList;

<>但是你应该实现你自己的矩阵类,因为你可能会有一些检查要做,并且函数<代码> GET(int行,int列)< /> >将是酷

也考虑由谷歌Guava库提供的集合。是基于2D数组的实现。

也考虑谷歌GuAVA库提供的集合。是一个基于2D数组的实现。

类似于
列表的解决方案速度较慢,因此您应该使用一维数组,如

    // Two dimentions: m and n

        List<String> arr = new ArrayList<String>(m*n);
        for (int i=0; i< m; ++i) {
           for (int j=0; j<n; ++j) {
             String str=arr.get(i*n + j);
             //You code here
           }
        }
//二维:m和n
List arr=新阵列列表(m*n);
对于(int i=0;i对于(int j=0;j像
List
这样的解决方案速度很慢,那么应该使用一维数组,比如

    // Two dimentions: m and n

        List<String> arr = new ArrayList<String>(m*n);
        for (int i=0; i< m; ++i) {
           for (int j=0; j<n; ++j) {
             String str=arr.get(i*n + j);
             //You code here
           }
        }
//二维:m和n
List arr=新阵列列表(m*n);
对于(int i=0;i对于(intj=0;j你可以这样定义

1>

2>


你可以这样定义

1>

2>


您的代码在哪里?到目前为止您尝试了什么?可能是嵌套列表
List
outter.get(i).get(j)
…如果我想将它们视为二维数组,我只想知道如何使用ArrayList,而这正是A4L以前编写的…您的代码在哪里?您迄今为止尝试了哪些内容?可能是嵌套列表
List
outter.get(I).get(j)
…如果我想把它们当作二维数组,我只想知道如何使用ArrayList,这正是A4L以前写的…是的,兄弟,我想制作一个列表,其中每个列表键都包含一个列表。你想过用
映射来代替吗?是的,兄弟,我想制作一个列表,其中每个列表键都包含一个列表密钥中包含另一个列表。您是否想过改用
映射
?我认为此解决方案会有所帮助。我将尝试此方法并让您了解其结果。我认为此解决方案会有所帮助。我将尝试此方法并让您了解其结果
List<Object[]> list = new ArrayList<Object[]>();
list.get(i)[j];
List<Map<Integer,Object>> list = new ArrayList<Map<Integer,Object>>();
list.get(i).get(j);