其实Guavad的集合操作适合我们平时使用的原生的集合是一样的,只是他将我们平时操作的集合更加的流畅优雅加单。其实Map就和List一样也是在创建的时候和其他的一些很赞的方法,但是呢好像这些方法我们平时的工作中用到的很少,但是呢我们还是来看看把。
首先说一下这几个方法:
1:创建Map方法:
Map,String> guavaMap = Maps.newHashMap();
2:集合diff方法:两个Map中都有的映射项,包括匹配的键与值
MapDifferencediffMap = Maps.difference(map,guavaMap) ;
3:也是集合方法:键只存在于左边Map的映射项,也就是说左边参数map里面有的而右边没有的就展示:
entriesOnlyOnLeft()
4:也是集合方法:键只存在于右边Map的映射项
entriesOnlyOnRight()
好了上代码:
import com.google.common.collect.ImmutableMap; import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import java.util.HashMap; import java.util.Map; /** * Created by luyangli on 15-9-19. */ public class MapsTest { public static void main(String[] args) { Map, String> map = new HashMap, String>(); map.put("3","c"); map.put("1","a"); map.put("2","b"); map.put("4","t"); System.out.println("========原生Map======="); for (Map.Entry , String> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } Map ,String> guavaMap = Maps.newHashMap(); guavaMap.put("3","c"); guavaMap.put("1","a"); guavaMap.put("2","b"); guavaMap.put("5","t"); System.out.println("========Guava Map======="); for (Map.Entry , String> entry : guavaMap.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } MapDifference ,String> diffMap = Maps.difference(map,guavaMap); System.out.println("========Guava diff Map======="); for (Map.Entry , String> entry : diffMap.entriesInCommon().entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("========Guava diff Left Map======="); for (Map.Entry , String> entry : diffMap.entriesOnlyOnLeft().entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("========Guava diff Right Map======="); for (Map.Entry , String> entry : diffMap.entriesOnlyOnRight().entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } // Map left = ImmutableMap.of("a", 1, "b", 2, "c", 3); // Mapright = ImmutableMap.of("a", 1, "b", 2, "c", 3); // MapDifferencediff = Maps.difference(left, right); // Mapmap2 = diff.entriesInCommon(); // System.out.println("========Guava diff Map======="); // for (Map.Entryentry : map2.entrySet()) { // System.out.println(entry.getKey() + ":" + entry.getValue()); // } } }
我们来看一下效果:
========原生Map======= 3:c 2:b 1:a 4:t ========Guava Map======= 3:c 2:b 1:a 5:t ========Guava diff Map======= 3:c 2:b 1:a ========Guava diff Left Map======= 4:t ========Guava diff Right Map======= 5:t ========Guava diff Map======= b:2 c:3 a:1
好了先写在这,我要去健身房了,回来补上Map的一下排序。。。
好高心昨天在健身房要到了心仪的女生的微信号,好开心好开心,昨天我也是购拼的,昨天为了要微信号在健身房带了4个小时,累死了。
好了今天我们学习以下Map的几种遍历方法:我在今天整理了四种Map的遍历方式,现在原样奉上:
System.out.println("=====第一种Map的Key遍历,遍历Key和Value====="); //第一种Map的Key遍历,遍历Key和Value for (String key : map.keySet()) { System.out.println("Key : " + key + " and value : " + map.get(key)); }
//第二种使用entries进行遍历 System.out.println("=====第二种使用entries进行遍历====="); for (Map.Entry, String> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " and value : " + entry.getValue()); }//第三种通过Map.entrySet使用iterator遍历key和value System.out.println("=====第三种通过Map.entrySet使用iterator遍历key和value====="); Iterator, String>> it = map.entrySet().iterator(); while (it.hasNext()){ Map.Entry,String> entry = it.next(); System.out.println("Key : " + entry.getKey() + " and value : " + entry.getValue()); } //第四种获取Map的Key或者Value System.out.println("=====第四种获取Map的Key====="); for (String key : guavaMap.keySet()) { System.out.println("Key : " + key); }
System.out.println("=====第四种获取MapValue====="); for (String value : guavaMap.values()) { System.out.println("value : " + value); }
看一下结果:
=====第一种Map的Key遍历,遍历Key和Value=====
Key : 3 and value : c
Key : 2 and value : b
Key : 1 and value : a
Key : 4 and value : t
=====第二种使用entries进行遍历=====
Key : 3 and value : c
Key : 2 and value : b
Key : 1 and value : a
Key : 4 and value : t
=====第三种通过Map.entrySet使用iterator遍历key和value=====
Key : 3 and value : c
Key : 2 and value : b
Key : 1 and value : a
Key : 4 and value : t
=====第四种获取Map的Key=====
Key : 3
Key : 2
Key : 1
Key : 5
=====第四种获取MapValue=====
value : c
value : b
value : a
value : t
其实我们的几种方法都是OK的,就是有效率之分啦,人家提供几种不同的方法就是有几种区别啦:1.就是方法升级,也就是更方便啦 2.就是有更高效的手段啦 3.....
所以我们现在来看一下我们的几种方法:第四种不是很难常用,就不在比较之内。
第一种虽然很简便,耶很好看清楚,但是呢这个效率是最低的,应为从Map中取出Key值在通过Key值来取出Value,这个是很费效率的操作,这就是简便的代价--牺牲效率。
第三种方法是之前map 老版本的唯一指定遍历方式,第二种是他的升级,也就是说他们的效率相差不多。但是呢现在大家都习惯于用第二种方式啦。
至于具体的问题,具体分析,具体决策啦。。