容器遍历与迭代器Iterator

我们为什么需要迭代器Iterator?

  在集合的使用过程中,我们经常需要遍历集合,Java的迭代器Iterator,提供了一种统一的快捷的遍历容器方式。

遍历Collection

遍历List

  List中的实现类,都是有下标的,所以可以通过for循环来遍历。此外还可以通过foreach循环,以及迭代器Iterator遍历,以ArrayList为例:

public class Test {

	public static void main(String args[]) {
		
		List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
		System.out.println(list);
		//for循环
		System.out.println("------------------for循环----------------");
		for(int i = 0;i<list.size();i++) {
			System.out.println(list.get(i));
		}
		//foreach
		System.out.println("------------------foreach----------------");
		for (String string : list) {
			System.out.println(string);
		}
		//迭代器Iterator
		System.out.println("------------------迭代器Iterator----------------");
		for(Iterator<String> iter= list.iterator();iter.hasNext();){
			String str = iter.next();
			System.out.println(str);
		}
		
	}
}
-----------------------------------------------------------
输出结果为:
[a, b, c]
------------------for循环----------------
a
b
c
------------------foreach----------------
a
b
c
------------------迭代器Iterator----------------
a
b
c

遍历Set

  Set中的实现类,都是没有下标的,所以不可以通过for循环来遍历。但可以通过foreach循环,以及迭代器Iterator遍历,以HashSet为例:

public class Test {

	public static void main(String args[]) {
		
		Set<String> set = new HashSet<String>();
		set.add("a");
		set.add("b");
		set.add("c");
		System.out.println(set);
		//foreach
		System.out.println("------------------foreach----------------");
		for (String string : set) {
			System.out.println(string);
		}
		//迭代器Iterator
		System.out.println("------------------迭代器Iterator----------------");
		for(Iterator<String> iter= set.iterator();iter.hasNext();){
			String str = iter.next();
			System.out.println(str);
		}
		
	}
}
-------------------------------------------------------------------
输出结果为:
[a, b, c]
------------------foreach----------------
a
b
c
------------------迭代器Iterator----------------
a
b
c

遍历Map

  Map中的实现类,都是以键值对的形式来存储的,在遍历时有两种思路:

  • 1.通过取出Map中的Key值,将所有Key值作为一个Set集合。然后遍历这个Set集合,在遍历时,通过map的get方法,传入key值,从而取出对应的value。
  • 2.通过将Map的Entry节点作为一个Set集合取出来,然后遍历这个Set结合,在遍历过程中,通过Entry的getKey()方法,取出key,用 entry的getValue()方法,取出Value。

  以HashMap为例,实例:

public class Test {

	public static void main(String args[]) {
		
		Map<Integer,String> map = new HashMap<>();
		map.put(1,"a");
		map.put(2,"b");
		map.put(3,"c");
		System.out.println("map:"+map);
		
		//迭代器Iterator,把map中的key取出来,作为Set,然后类似Set遍历,用map的get()方法,取出key对应的value
		System.out.println("------------------key----------------");
		Set<Integer> keySet = map.keySet(); //取出map的key,作为一个set集合
		for(Iterator<Integer> iter= keySet.iterator();iter.hasNext();){
			Integer str = iter.next();
			System.out.println("key:"+str+"-value:"+map.get(str));
		}
		
		//迭代器Iterator,把map中的Entry取出来,作为Set,然后类似Set遍历,用 entry的getKey()方法,取出key,用 entry的getValue()方法,取出Value
		System.out.println("----------------Entry------------------");
		Set<Entry<Integer, String>> entrySet = map.entrySet(); //取出map的entry,作为一个set集合
		for(Iterator<Entry<Integer, String>> iter= entrySet.iterator();iter.hasNext();){
			Entry<Integer, String> entry = iter.next();
			System.out.println("key:"+entry.getKey()+"-value:"+entry.getValue());
		}
		
	}
}
-----------------------------------------------------------
输出结果为:
map:{1=a, 2=b, 3=c}
------------------key----------------
key:1-value:a
key:2-value:b
key:3-value:c
----------------Entry------------------
key:1-value:a
key:2-value:b
key:3-value:c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值