我是靠谱客的博主 微笑小蝴蝶,最近开发中收集的这篇文章主要介绍ArrayList,HashMap分别用迭代器迭代遍历获取值详解与总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

这几天迷恋上了看源码。我要看源码,看源码,真带劲哎~~

看着看着就看到了集合这一块,

我就试了试,哎呀妈,还真是。

ArrayList<String> list = new ArrayList<String>();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		list.add("dd");
		Iterator iterator = list.iterator();
		while (iterator.hasNext()) {
			String next = (String) iterator.next();
			if ("aa".equals(next)) {
				next.remove();
			}
		}
		System.out.println(list);

而在源码里,关键点就在于:调用list.remove()方法导致modCount和expectedModCount的值不一致。

可以参考文章:https://www.cnblogs.com/dolphin0520/p/3933551.html 

里面介绍的很详细!

上面的代码应该修改一下:

 

其次呢,说一下HashMap

先介绍一下这几种map: 
l (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为null,不允许多条记录的值为null。HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步的能力。 
l (2)Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,然而,这也导致了Hashtable在写入时会比较慢。 
l (3)LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的。在遍历的时候会比HashMap慢。有HashMap的全部特性。 
l (4)TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iteraor遍历TreeMap时,得到的记录是排过序的。TreeMap的键和值都不能为空。

注意:不能直接拿map的key值作为迭代器进行遍历

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));
  }

  //第二种,Map.Entry<String,String>写法很关键
  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);
  }
 }

 

最后

以上就是微笑小蝴蝶为你收集整理的ArrayList,HashMap分别用迭代器迭代遍历获取值详解与总结的全部内容,希望文章能够帮你解决ArrayList,HashMap分别用迭代器迭代遍历获取值详解与总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部