Java 迭代器与集合
迭代器 和 集合 ,两者都在很多时候帮助和安慰了程序员。但它们的用法和应用有很大的不同。
1.迭代器
- 声明
public interface Iterator
Type 参数:
E – 该迭代器返回的元素的类型
迭代器在Java的Collection框架中被用来一个一个地检索元素。
- 方法总结
| 修改器和类型 | 方法 | 说明 |
|---|---|---|
| 默认无效 | forEachRemaining(Consumer super E> action) | 对每个剩余的元素执行给定的动作,直到所有的元素都被处理完,或者该动作抛出一个异常。 boolean | hasNext() | 如果迭代有更多的元素,返回true。 E | next() | 返回迭代中的下一个元素。 默认无效 | remove() | 从底层集合中删除由该迭代器返回的最后一个元素(可选操作)。 **2.集合** * **声明** “`java **类型参数:** 集合是一组单独的对象,作为一个单元来表示。Java提供了集合框架,它定义了几个类和接口来表示作为一个单元的一组对象。 * **方法总结** 修改器和类型 | 方法 | 说明 |
如果这个集合包含了指定集合中的所有元素,则返回true。 |
| 布尔型 | equals(Object o) | 将指定的对象与这个集合进行比较,看是否相等。 |
| int | hashCode() | 返回此集合的哈希代码值。 |
| boolean | isEmpty() | 如果这个集合不包含任何元素,返回true。 |
| 迭代器<E | 迭代器() | 返回这个集合中的元素的迭代器。 |
| 默认的Stream<E | parallelStream() | 返回一个以这个集合为源的可能的平行流。 |
| boolean | remove(Object o) | 从这个集合中删除一个指定元素的单个实例,如果它存在的话(可选操作)。 |
| 布尔型 | removeAll(Collection<?> c) | 删除此集合中所有也包含在指定集合中的元素(可选操作)。 |
| 默认布尔值 | removeIf(Predicate super E> filter) | 删除此集合中满足给定谓词的所有元素。 布尔型 | retainAll(Collection> c) |
只保留此集合中包含在指定集合中的元素(可选操作)。 |
| int | size() | 返回这个集合中元素的数量。 |
| 默认的Spliterator<E | spliterator() | 在这个集合中的元素上创建一个Spliterator。 |
| 默认的Stream<E | stream() | 返回一个以这个集合为源的连续的Stream。 |
| 对象[] | toArray() | 返回一个包含此集合中所有元素的数组。 |
| T[] | toArray(T[] a) | 返回一个包含此集合中所有元素的数组;返回的数组的运行时类型是指定数组的类型。 |
迭代器vs.集合
- 迭代器只能移动到 下一个() 元素或 删除() 一个元素。
但是集合可以 添加() 、迭代、 删除() 或 清除() 集合中的元素。
-
迭代器提供了比集合更好的速度,因为迭代器接口的操作数量有限。
-
java.sql.SQLException扩展了Iterable 因此,它允许调用者安全地迭代SQLException的原因。
在这种情况下,使用一个集合会很昂贵,因为在一个有n个异常的链中,在SQLException接口中使用一个集合可能需要构建O(n^2)个元素。 但是,使用Iterable提供了对异常链的O(n)访问。
极客教程