你可以给出任何合理的例子,如ArrayList<ArrayList<E>>
,比如声明,初始化,添加元素并迭代它们。这是在Java中获得二维数组行为的方法之一吗?ArrayList的用法<ArrayList<E>>
1
A
回答
6
是的,ArrayList<ArrayList<E>>
类似于E
(E[][]
)的二维阵列。它具有在使用List
和在Java中使用数组之间的所有常见区别(List
是更高级别的API,支持调整大小,在任意位置添加元素...)。
你千万不要把它任何不同于正常List
,不同的是它包含的元素实际上是其他List
对象:
初始化:
ArrayList<ArrayList<E>> listOfLists = new ArrayList<ArrayList<E>>();
叠代:
for (ArrayList<E> innerList : listOfLists) { doSomethingWithInnerList(innerList); }
添加到它:
ArrayList<E> newInnerList = new ArrayList<E>(); // add stuff to newInnerList listOfLists.add(newInnerList);
0
ArrayList的用于保存对象数组。另一方面它可以有重复的值。当你需要快速插入/删除时,你可以使用它。它按照输入的顺序保存值。例如
List<String> ls= new ArrayList<String>();
ls.add("foo");
ls.add("bar");
for(String val:ls){
System.out.println("Value :" + val);
}
1
我要添加到约阿希姆·绍尔的答案的唯一的事情是肯定的,一个ArrayList<ArrayList<E>>
可以类似于E的二维数组(E[][]
)有一个额外的扭曲(除一维数组和列表之间的所有常见区别):
使用列表列表,可以使“锯齿状”数组等价。并非所有内部列表都需要具有相同的size()
,而在二维数组中,根据定义,E[][]
的所有“行”具有相同的长度。这是“矩形”。列表清单不一定是矩形的;它可以是锯齿状的。
相关问题
- 1. ArrayList <Object <ArrayList <Object> >>
- 2. MalformedParameterizedTypeException当使用ArrayList <ArrayList<>>
- 3. ArrayList的问题<ArrayList <String>>
- 4. ArrayList <ArrayList <String>> vs ArrayList <Object>
- 5. 转换ArrayList <ArrayList <String>>“返回”ArrayList <String>
- 6. ArrayList的<String>方法
- 7. 无法从ArrayList中<Parcelable>转换为ArrayList的<ClSprite>
- 8. ArrayList <ArrayList <Integer>> IndexOutOfBoundsException
- 9. ArrayList <> vs ArrayList <Integer>
- 10. Transpose ArrayList <ArrayList <String>> in Java
- 11. 无法将ArrayList <String>转换为ArrayList <java.lang.String>
- 12. 方法从ArrayList中<Float>和ArrayList <Integer>
- 13. 无法将ArrayList <subtype>转换为ArrayList <type>
- 14. Java的可迭代<Iterable<T>>到ArrayList的<ArrayList<T>>
- 15. 如何声明HashMap <String,ArrayList <ArrayList <String> >>?
- 16. Java将ArrayList <Integer>添加到ArrayList <ArrayList <Integer>>替换ArrayList的ArrayList的所有元素
- 17. 使用ArrayList的<Object>
- 18. 如何将ArrayList <Object>转换为ArrayList <String>或ArrayList <Timestamp>?
- 19. 为什么我们写ArrayList <ArrayList <Integer>> list = new ArrayList <>();
- 20. static Hashtable <Leader,ArrayList <Integer>> assignedLeader = new Hashtable <Leader,ArrayList <Integer>>(20);
- 21. ArrayList <Integer>使用get/remove方法
- 22. ArrayList <?>,ArrayList,ArrayList <Object>有什么区别?
- 23. 不能通过的ArrayList <Impl>到方法采取的ArrayList <Interface>
- 24. 新的ArrayList <Class>()或新的ArrayList <>()在Java中?
- 25. 捆绑的ArrayList <ArrayList的<Integer>>
- 26. 铸造的ArrayList <SomeClass>到的ArrayList <SomeInterface>
- 27. 转换的ArrayList <Object>到ArrayList的<AnotherType>
- 28. 转换的ArrayList <Long>到ArrayList的<String>与循环
- 29. 访问的ArrayList <ArrayList的<SomeObject>>元素
- 30. 初始化的ArrayList <ArrayList的<Integer>>