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