這是在一個課程中,看到了做者用 HashMap map = Maps.newHashMap()這種寫法建立map對象感到很新穎,後來查到是用了google的Guava核心庫,主要是使得代碼更優美,易維護,易讀,從大量的底層冗雜的代碼中解脫。java
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>
下面就能夠愉快地使用了:ui
HashMap m = Maps.newHashMap(); m.put("A","B"); m.put("C","D"); System.out.println( m.get("A")); //B System.out.println( m.get("C")); //D List list = Lists.newArrayList(); list.add(1); list.add(2); System.out.println(list.get(0));//1 System.out.println(list.get(1));//2
直接使用Maps.newHashMap來建立map集合等,有人會問這和使用原生java有什麼不一樣?google
查看源碼,發現並無什麼不一樣,guava也只是作了封裝,底層仍是調用jdk的。spa
guava操做集合類還有一個重要的用法就是建立不可變的集合,使用繼承或者實現List或Map的Immutable類,code
如ImmutableList,ImmutableMap,ImmutableSet等。對象
咱們知道能夠使用Collections.unmodifiableList()來將集合變爲不可改變類,但這種方法並很差,具體能夠去查查資料。blog
使用guava的這種方式是更好的選擇,其方式也很簡單以下:繼承
ImmutableList<Integer> of = ImmutableList.of(1,2,3,4); ImmutableMap<String,String> map = ImmutableMap.of("key1", "value1", "key2", "value2");
固然,這樣看起來不太好看,有能夠使用下面這種方式(推薦):get
ImmutableList list2 = new ImmutableList.Builder<Integer>() .add(1) .add(2) .add(3) .build(); ImmutableMap<Integer, String> immutaleMap2 = new ImmutableMap.Builder<Integer, String>() .put(0,"day") .put(1,"night") .build();
若有不正確的地方,歡迎指正!源碼