遇到該問題的背景: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有序
我的理解: