【发布时间】:2011-02-11 17:59:11
【问题描述】:
我有一个 ArrayList,我正在迭代几次,看起来它没有保持迭代的顺序。我看得更深,似乎为这次迭代(由其他人)编写的自定义迭代器标记首先采用传入的 ArrayList 并在迭代之前使用 Arrays.asList 将其桥接到 Object[] 集合。迭代顺序是否丢失?这是 Arrays.asList 所期望的吗?
编辑:
这是该操作对传递给迭代器标签的原始集合所做的操作:
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();
}
【问题讨论】:
-
您的订单丢失了吗?
-
似乎是这样,但我试图找出原因,或者它是否与我构建 UI 的方式有关,而不是迭代本身。至少可以说,我正在使用的自定义迭代器“很难”。
-
你混淆了一些东西,该方法检查集合是否是一个数组,如果它被包装在一个列表中,如果集合是一个你声称的 Arraylist,那么它只返回迭代器参见 instanceof Collection 部分.
标签: java collections arraylist