我有一个我正在迭代几次的ArrayList,看起来它没有维持迭代的顺序.我看得更深,似乎为此迭代(由其他人)编写的自定义迭代器标记首先在ArrayList中传递并使用Arrays.asList在迭代之前将其桥接到Object []集合.迭代的顺序是否会丢失?是否与Arrays.asList一起预期?
编辑:
以下是操作对传递给iterator标记的原始集合的作用:
if(collection.getClass().isArray()) {
iterator = Arrays.asList((Object[]) collection).iterator();
} else if(collection instanceof Collection) {
iterator = ((Collection) collection).iterator();
} else if(collection instanceof Iterator) {
iterator = (Iterator) collection;
} else if(collection instanceof Map) {
iterator = ((Map) collection).entrySet().iterator();
}
Run Code Online (Sandbox Code Playgroud)
Pow*_*ord 10
List仍然由原始数组支持,因此项目的显示顺序与它们在数组中的顺序相同.
另外,请注意asList是一个通用方法,因此Arrays.asList(T[])将返回a List<T>.
至于另一个方向,List是的toArray
以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组.
有两种toArray方法.第一个返回a Object[],第二个返回一个数组作为其参数,并返回相同类型的数组.
像这样的东西并不罕见,使用String数组作为示例:
String[] y = x.toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)
(这个例子是从所拍摄的JavaDoc为List<E>)
| 归档时间: |
|
| 查看次数: |
14729 次 |
| 最近记录: |