Iterator使用 package com.gcx.demo; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class IteratorTest { public static void main(String[] args) { List list=new ArrayList(); list.add("a"); list.add("b"); Iterator iterator = list.iterator(); while(iterator.hasNext()){ Object next = iterator.next(); System.out.println(next); } Set set = new HashSet(); set.add("高1"); set.add("高2"); set.add("高3"); for(Iterator it=set.iterator();it.hasNext();){ Object next = it.next(); System.out.println(next); } Map map = new HashMap(); map.put("aa", "aaaa"); map.put("bb", "bbbb"); Set keySet = map.keySet(); Iterator iterator2 = keySet.iterator(); while(iterator2.hasNext()){ Object next = iterator2.next(); System.out.println(next); } } } 底层实现 package com.gcx.demo; import java.util.Arrays; import java.util.Iterator; public class IteratorImpl<e> implements java.lang.Iterable<e>{ private Object elem[]=new Object[5]; private int size=0; public int size(){ return size; } public void add(E ele){ if(this.size==elem.length){ elem=Arrays.copyOf(elem, elem.length+5); } elem[size++]=ele; } public Iterator<e> iterator(){ return new Iterator<e>(){ private int cursor=-1; @Override public boolean hasNext() { return cursor+1<size; } @Override public E next() { cursor++; return (E)elem[cursor]; } public void remove(){ System.arraycopy(elem, cursor+1, elem, cursor, size-(cursor+1)); size--; cursor--; } }; } public static void main(String[] args) { IteratorImpl<integer> iter=new IteratorImpl<>(); iter.add(1); iter.add(2); for(Integer i:iter){ System.out.println(i); } System.out.println("********"); IteratorImpl<string> iter2=new IteratorImpl<>(); iter2.add("aaa"); iter2.add("aaa1"); iter2.add("aaa2"); iter2.add("aaa3"); Iterator<string> iterator = iter2.iterator(); while(iterator.hasNext()){ String next = iterator.next(); System.out.println(next); } } } </string></string></integer></e></e></e></e>