集合遍历
1、使用增强的for循环
1 hashmap hashmap=new hashmap(); 2 hashmap.put("name","张三"); 3 hashmap.put("age",12); 4 hashmap.put("score",90); 5 for (object key:hashmap.keyset()){ 6 system.out.println(key+" --> "+hashmap.get(key)); 7 }
此种方式可以遍历所有集合,但使用的是临时变量,只能访问集合元素,不能修改。
2、collection集合可以使用自身的 foreach(consumer action)方法,consumer是一个函数式接口,只需实现 accept(element)方法。
1 hashset hashset=new hashset(); 2 hashset.add("张三"); 3 hashset.add("李四"); 4 hashset.add("王五"); 5 //参数表示当前元素 6 hashset.foreach(ele-> system.out.println(ele));
此方式只能用于collection集合。
3、map集合也可以使用自身的forforeach(biconsumer action),biconsumer是一个函数式接口,只需要实现accept(key,value)方法。
1 hashmap hashmap=new hashmap(); 2 hashmap.put("name","张三"); 3 hashmap.put("age",18); 4 hashmap.put("score",90); 5 //2个参数,一个代表键,一个代表对应的值 6 hashmap.foreach((key,value)-> system.out.println(key+" --> "+value));
此方式只能用于map集合。
4、使用iterator接口
iterator即迭代器,可用的4个方法:
boolean hasnext()
object next() 获取下一个元素
void remove() 删除当前元素
void foreachremaining(consumer action) 可以使用lambda表达式遍历集合
1 hashset hashset=new hashset(); 2 hashset.add("张三"); 3 hashset.add("李四"); 4 hashset.add("王五"); 5 //获取迭代器对象 6 iterator iterator=hashset.iterator(); 7 while (iterator.hasnext()){ 8 system.out.println(iterator.next()); 9 }
1 hashset hashset=new hashset(); 2 hashset.add("张三"); 3 hashset.add("李四"); 4 hashset.add("王五"); 5 //获取迭代器对象 6 iterator iterator=hashset.iterator(); 7 iterator.foreachremaining(element-> system.out.println(element));
以上两种方式效果完全相同。
说明:
collection集合才能使用此方式,因为collection集合才提供了获取iterator对象的方法,map未提供。
list集合还可以使用 listiterator() 获取 listiterator对象,listiterator是iterator的子接口,使用方式和iterator完全相同,只是listiterator还提供了其它方法。
在循环体中不能使用集合本身的删除方法来删除元素,会发生异常。要删除,只能使用iterator类提供的remove()方法来删除。
上一篇: bzoj1861 书架
下一篇: 这就是我的全部…