遍历map

Map 集合如何遍历 ,强烈推荐entrySet() 不要使用keySet()

只愿长相守 提交于 2019-11-27 12:50:59
Map<String,Object> map = new HashMap<>(); // 第一种遍历 map.keySet(); 这种遍历需要遍历两次,第一次得到key的集合,第二次用map.get(key);效率会低 for(String strkey : map.keySet()){ System.out.println(strkey+map.get(strkey)); } //第二种遍历方法,map.entrySet() 返回的结果Map.Entry<K, V> 是key和value的对象集合,只需要遍历一次就行了 效率会高 for(Map.Entry<String,Object> enty :map.entrySet()){ System.out.println(enty.getKey()+enty.getValue()); } 来源: https://blog.csdn.net/lijunnan233/article/details/99676651

集合的笼统介绍之map

↘锁芯ラ 提交于 2019-11-27 12:09:38
collection集合的全部都已经结束,但是我们发现他都是单列存在的集合,map则是双列存在的集合。 如图: 它是键值存在的集合,键是唯一的,但是值可以不唯一,但是必须一对一唯一。也就是不能重复的。 Map接口中常用集合概述(它的键对,其实就是两个泛型) 通过查看 Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。 l HashMap<K,V> :存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复 ,需要重写键的 hashCode()方法、equals()方法。 常用 l LinkedHashMap<K,V> : HashMap下有个子类LinkedHashMap, 存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 l 注意 : Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。 如前文,集合 ①创建对象 Map<string,interger> map=new hashmap <string,integer>(); ②常用方法 ③遍历 重要 它的遍历方式非常特殊。 1.

Map双列集合

懵懂的女人 提交于 2019-11-27 02:18:00
Map 概括 Map是双列集合,双列集合中的每一个元素都是一个键值对。 Map<K,V>有两个泛型,K表示键的数据类型,V表示值的数据类型。 Map中的常见方法: (记住)V put(K key, V value):向Map集合中添加键值对元素。在添加时,如果键已经存在,就会使用新的值覆盖掉原来的值。 (记住)V get(Object key): 根据键获取对应的值。 boolean containsKey(Object key): 判断Map集合中是否包含指定的键。 V remove(Object key): 根据键删除整个的键值对, 并返回被删除的值。 tips: Map是一个接口,如果要用,需要使用实现类,最常用的实现类是HashMap public class Demo01MapMethod { public static void main ( String [ ] args ) { //创建Map集合保存数据。 key为整数,value为字符串 Map < Integer , String > map = new HashMap < > ( ) ; //V put(K key, V value):向Map集合中添加键值对元素。 map . put ( 100 , "刘德华" ) ; map . put ( 200 , "张学友" ) ; map . put ( 300

迭代器(Iterator)遍历List、Set、Map

℡╲_俬逩灬. 提交于 2019-11-26 21:39:51
大晚上的睡不着觉,还是起来写博客吧。迭代器我主要是用来遍历List、Set、Map的,然而好久没用过,又突然忘记了,所以有写了一遍(妈的,我还就不信了,我写10遍看能不能忘记)。 迭代器也就是将集合的数据放到一个容器中并排成一排,iterator有一个游标,最初的时候,游标在第一个元素前面,调用Iterator.next()是将游标往后移一位,Iterator.hasNext()是判断游标后面还没有可以迭代的元素。 为什么用迭代器了,在《java编辑思想》这本书里说,是因为最初的时候你用for循环遍历List,之后人家又要你遍历Set,但是for循环无法遍历Set,因为Set是无序的,所以后面就统一用迭代器遍历集合了。 遍历List 1 List<String> list = new ArrayList<String>(); 2 list.add("a"); 3 list.add("b"); 4 Iterator<String> iterator = list.iterator(); 5 while(iterator.hasNext()){ 6 String next = iterator.next(); 7 System.out.println(next); 8 } 遍历Set,和List一样 1 Set<String> set = new HashSet<String>();

Java中遍历map的4中方式

孤人 提交于 2019-11-26 19:47:23
关于java中遍历map具体哪四种方式,请看下文详解吧。 方式一 :这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } 方法二 :在for-each循环中遍历keys或values。 如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); //遍历map中的键 for (Integer key : map.keySet()) { System.out.println("Key = " + key); } //遍历map中的值 for (Integer value : map.values()) { System.out.println("Value = " + value); }

Lua 的table遍历 【转】

烈酒焚心 提交于 2019-11-26 18:32:43
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://rangercyh.blog.51cto.com/1444712/1032925 当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key , value in pairs(tbtest) do XXX end for key , value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table .maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历。当然你还会说lua的table遍历还有很多种方法啊,没错,不过最常见的这些遍历确实有必要弄清楚。 这四种方式各有特点,由于在工作中我几乎每天都会使用遍历table的方法,一开始也非常困惑这些方式的不同,一段时间后才渐渐明白,这里我也是把自己的一点经验告诉大家,对跟我一样的lua初学者也许有些帮助(至少当初我在写的时候在网上就找了很久,不知道是因为大牛们都认为这些很简单,不需要说,还是因为我笨,连这都要问)。 首先要明确一点,就是lua中table并非像是C/C++中的数组一样是顺序存储的

ConcurrentHashMap的使用

こ雲淡風輕ζ 提交于 2019-11-26 16:17:28
一.ConcurrentHashMap的简要总结: 1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁; 2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用; 3、Iterator对象的使用,不一定是和其它更新线程同步,获得的对象可能是更新前的对象, ConcurrentHashMap允许一边更新、一边遍历,也就是说在Iterator对象遍历的时候,ConcurrentHashMap也可以进行remove,put操作,且遍历的数据会随着remove,put操作产出变化, 所以希望遍历到当前全部数据的话,要么以ConcurrentHashMap变量为锁进行同步(synchronized该变量),要么使用CopiedIterator包装iterator,使其拷贝当前集合的全部数据,但是这样生成的iterator不可以进行remove操作。 二.Hashtable和ConcurrentHashMap的不同点: 1