集合的迭代

List中迭代

List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		System.out.println(list);
		// 通过集合的iterator()方法获取迭代器对象,并将迭代器与集合绑定
		// 表示这个迭代器迭代的是这个集合
		Iterator<Integer> it = list.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}

注意:在迭代的过程中不能对集合进行增删改,会由于不确定性发生
ConcurrentModificationException
解决方法:使用listIterator
步骤:
(1)通过list的litIterator()获取适使用listIterator对象
(2)使用listIterator的方法对集合进行改动

List<String> list2 = new ArrayList<>();
		list2.add("java");
		list2.add("python");
		list2.add("H5");
		list2.add("c");
		System.out.println(list2);
		ListIterator<String> it = list2.listIterator();
		while (it.hasNext()) {
			String n = it.next();
			if (n.equals("python")) {
				//set等同于下面2行代码
				//it.remove();
				//it.add("c++");
				it.set("c++");
			}
		}
		System.out.println(list2);
[java, python, H5, c]
[java, c++, H5, c]

Map的迭代:
Map不能使用普通循环和增强for循环
原因是:map不是数组,也不是iterable的实例,map不同于list,set,list、set都继承了collection,而collection继承了Iterable,所以list和set都是iterable的实例,不仅可以获取iterator对象,还能使用增强for循环。
KeySet():返回这个map集合中的键的set的集合
entrySet():
因为map获取不到iterator方法,所有用下面的两个方法

Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("A", 1);
		map.put("C", 2);
		map.put("F", 3);
		map.put("D", 4);
		map.put("B", 4);
		// 通过keySet方法获取map集合中所有键组成的集合
		Set<String> set = map.keySet();
		// 通过set的iterator方法获取set集合的迭代器对象
		Iterator<String> it = set.iterator();
		// 循环判断并获取
		while(it.hasNext()){
			String key = it.next();
			System.out.println(key +" = "+ map.get(key));
		}

Map<String, String> map = new HashMap<String, String>();
		map.put("王宝强", "马蓉");
		map.put("李晨", "范冰冰");
		map.put("文章", "马伊琍");
		map.put("刘恺威", "杨幂");
		
		// 通过map的entrySet方法获取map中所有键值对的映射关系所组成的set集合
		Set<Map.Entry<String, String>> set = map.entrySet();
		// 通过set的iterator方法获取迭代器对象
		Iterator<Map.Entry<String, String>> it = set.iterator();
		// 循环判断并获取
		while(it.hasNext()){
			Map.Entry<String, String> en = it.next();
			String key = en.getKey();
			String value = en.getValue();
			System.out.println(key +" - "+ value);
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值