遇到该问题的背景:java
首先要说明的是,迭代器要集合类库,须要Iterable和Iterator:sql
1.Iterable接口编程
如下是Iterable的定义:数组
public interface Iterable<T> { Iterator<T> iterator(); default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } } default Spliterator<T> spliterator() { return Spliterators.spliteratorUnknownSize(iterator(), 0); } }
Java基本数据类型包含8种:数据结构
- 6种数字类型(4个整型long-64位/int-32位/short-16位/byte-8位、2个浮点型double-64位/float-32位)
- 字符型char-16位
- 布尔型boolean
Iterator和ListIterator主要区别有:app
- ListIterator有add()方法,能够向List中添加对象;而Iterator不能
- ListIterator和Iterator都有hasNext()和next()方法,能够实现顺序向后遍历。ListIterator有hasPrevious()和previous()方法,能够实现逆向(顺序向前)遍历。Iterator就不能够。
- ListIterator能够定位当前的索引位置,nextIndex()和previousIndex()能够实现。Iterator 没有此功能。
- 均可实现删除对象,可是ListIterator能够实现对象的修改,set()方法能够实现。Iterator仅能遍历,不能修改。由于ListIterator的这些功能,能够实现对LinkedList等List数据结构的操做。
2.Iterator接口编程语言
如下是Iterator的定义:工具
public interface Iterator<E> { boolean hasNext(); E next(); default void remove() { throw new UnsupportedOperationException("remove"); } default void forEachRemaining(Consumer<? super E> action) { Objects.requireNonNull(action); while (hasNext()) action.accept(next()); } }
Java类库:
是由一些包组成,这些包包含了相关类、接口和异常处理类性能
- Java核心包:以Java开头,包含:java.lang 编程语言的基本类库、java.applet、java.awt、java.io、java.net、java.util 集合类+时间处理模式+日期时间工具等各种经常使用工具包、java.sql、java.test、java.security、java.beans、java.math、java.rmi
- Java扩展包:以javax开头,包含:javax.accessibility、javax.naming.
*
、javax.swing.*Java集合类库:ui
- List和Set都是实现Collection接口(Collection实现了Iteratable接口),Map不是
- List:LinkedList链表结构、ArrayList动态再分配的数组、Vector~Stack是同步的(同时操做回出现修改异常)
- Set:HashSet默认大小是1六、TreeSet有序
- Map:Hashtable(经过初始容量和加载因子来调整性能)、HashMap容许Key为空、TreeMap有序
我的理解: