如何使用迭代器

通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。

一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或ListIterator接口。

迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator 继承了Iterator,以允许双向遍历列表和修改元素。

序号 迭代器方法描述
1 使用 Java Iterator
这里通过实例列出Iterator和listIterator接口提供的所有方法。

遍历 ArrayList

实例

import java.util.*;
public class Test{
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
//第一种遍历方法使用foreach遍历List
for (String str : list) {
//也可以改写for(int i=0;i<list.size();i++)这种形式 System.out.println(str);
}
//第二种遍历,把链表变为数组相关的内容进行遍历 String[] strArray=new String[list.size()]; list.toArray(strArray);
for(int i=0;i<strArray.length;i++) //这里也可以改写为 foreach(String str:strArray)这种形式 { System.out.println(strArray[i]); }
//第三种遍历 使用迭代器进行相关遍历 Iterator<String> ite=list.iterator();
while(ite.hasNext())//判断下一个元素之后有值 {
System.out.println(ite.next()); } } }

  

解析:

三种方法都是用来遍历ArrayList集合,第三种方法是采用迭代器的方法,该方法可以不用担心在遍历的过程中会超出集合的长度。

遍历 Map

实例

import java.util.*; public class Test{
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1"); map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值 System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); }
//第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) { Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
//第三种:推荐,尤其是容量大时 System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
} //第四种 System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) { System.out.println("value= " + v); } } }

最新文章

  1. OpenGL超级宝典visual studio 2013开发环境配置,GLTools
  2. View相关知识学习总结
  3. 几种.NET平台数据持久化框架介绍
  4. 17.2---#字棋(CC150)
  5. GCD 多线程同步
  6. Android测试环境搭建(win7)
  7. github 中删除/更名版本库(repository)
  8. Linux下查看系统配置
  9. Centos修改默认网卡名
  10. Freemarker入门案例
  11. Python自学笔记-字符串编码(来自廖雪峰的官网Python3)
  12. Ubuntu系统下crontab的使用
  13. javascript之页面打印
  14. Unity5 打assetbundle时,无法打成图集仍然是散图的原因
  15. enumerate 模块
  16. MySQL缓存参数优化(转)
  17. Java框架之Struts2(六)
  18. CEPH Object Gateway
  19. VS2015 与 Git 的简单使用
  20. [UE4]单映射:TMap容器,字典表

热门文章

  1. elasticsearch安装kibana插件
  2. python中open函数的用法
  3. (三)发布Dubbo服务
  4. 20165203 Mypwd的解读与实现
  5. awk 调用 shell 命令,并传递参数
  6. java过滤器、监听器、拦截器机制
  7. commonjs,amd,cmd
  8. web前端实现本地存储
  9. 【BZOJ-4408】神秘数 可持久化线段树
  10. hdu 5726 GCD 暴力倍增rmq