写的很是棒的一篇总结: http://blog.csdn.net/speedme/article/details/22398395#t1java
下面主要看各个集合如何使用迭代器Iterator获取元素:spa
1.list使用迭代器Iterator.net
public class testArrayList { public static void main(String args[]) { f1(); f2(); } public static void f1(){ List<String> strList = new ArrayList<String>(); for (int i = 0; i < 10; i++) { strList.add("string" + i); } Iterator<String> iterator = strList.iterator();//list.iterator()
while (iterator.hasNext()) //判断集合中元素是否遍历完毕,若是没有,就返回true
{ if (iterator.next().equals("string3")) { iterator.remove(); //iterator.remove()移除的是最近一次iterator.next()所获取的对象
} } iterator = strList.iterator();//此步很是重要,删除后要从新定义迭代器
while (iterator.hasNext()) { System.out.println(iterator.next()); //iterator.next() 返回下一个元素
} } public static void f2() { // 1.向arraylist中添加元素
ArrayList arrayList = new ArrayList(); arrayList.add("wyy"); //arrayList.add
arrayList.add("12"); arrayList.add("huhu"); arrayList.add("897"); System.out.println("输出整个arraylist" + arrayList); //[wyy, 12, huhu, 897]
for (int i = 0; i < arrayList.size(); i++) { System.out.println(arrayList.get(i)); } Iterator<String> a = arrayList.iterator(); System.out.println("剩下的元素有:"); while (a.hasNext()) { if (a.next().equals("12")) { a.remove(); } } //用for循环,能够节约内存,开发时通常使用
for( a = arrayList.iterator();a.hasNext();)//注意,若是判断结果后删除,必须从新对迭代器进行定义,才能取出剩余的数据
{ System.out.println(a.next()); } } }
2.set使用迭代器Iterator3d
package collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; /** * Created by wyy on 2017/2/20. */
public class SetTest { public static void main(String[] args) { //set经常使用的方法:
Set set = new HashSet(); set.add("wq"); set.add("er"); set.add("er"); set.add("gee"); set.add("wdd"); set.add("3242"); System.out.println(set); Set sortedSet = new TreeSet(set); //添加的元素必须是有效,便可比较排序的,用compareTo
/* sortedSet.add(new SetTest()); 报错:collection.SetTest cannot be cast to java.lang.Comparable add的元素必须是能够比较的*/ System.out.println(sortedSet); //[3242, er, gee, wdd, wq],列表的第二次输出已按字母顺序排序。
String a="a"; String b="a"; System.out.println(a.hashCode());//65
System.out.println(b.hashCode());//97
Iterator iterator=set.iterator();//建立一个集合的迭代器,用来取元素
while (iterator.hasNext()){ Object obj = iterator.next(); System.out.println(obj); } } }
3.map使用迭代器,共有4种方法code
package collection; import java.util.*; /** * Created by wyy on 2017/2/21. */
public class MapTest { public static void main(String[] args) { Map<Integer,String> map=new HashMap<>(); map.put(1,"wo"); map.put(2,"chi"); map.put(3,"xi"); map.put(4,"gua"); System.out.println(map.size()); /*方法1:使用set存储key的值,而后用for循环获取value的值*/ Set<Integer> set=map.keySet();//获取全部key的值
for (int i:set ) { String value=map.get(i); //获取value的值
System.out.println(value); } /*方法2:使用Map.entrySet<>构造iterator遍历key和value*/ Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator(); while (it.hasNext()){ Map.Entry<Integer,String> entry=it.next(); System.out.println("the key is:"+entry.getKey()+",and the value is:"+entry.getValue()); } /*方法3:推荐,经过Map.entrySet遍历key和value,特别是大容量时 */
for (Map.Entry<Integer,String> en:map.entrySet()){ System.out.println("the key is:"+en.getKey()+",and the value is:"+en.getValue()); } /* 方法4:只能获得value的值 */
for (String v1:map.values() ) { System.out.println("the value is:"+v1); } } }