Trove一個快速、輕量級針對java原子類型(byte,int,float,long等)的Collection 類的集合。其官方網站:http://trove.starlight-systems.com/home。java
據官方介紹,Trove有兩個目標,其一是提供免費的、快速的、輕量級的java Collections API的一個實現。這些實現被設計爲可替換對jdk集合代碼的使用。其二是提供針對原子類型的集合。在jdk中主要是經過原子類型的包括類型如Integer,Long等,再配合面向對象的集合來實現。如在jdk中若是須要使用int類型的集合,通常都是int的包裝類Integer結合List或者其它的集合類。在大多數應用程序中,使用存儲原子類型的集合,會減小對內存的使用,同時也不會對性能帶來損失。android
最近在閱讀一個開源的android項目源碼時,發現其中使用到了這個庫,google了一番,發現是個好東西,隨記下來以備後用。ide
這寫幾個簡單的例子:性能
一、支持int類型的List:TIntArrayList網站
public class IntList { public static void main(String[] args) { TIntArrayList intList = new TIntArrayList(); intList.add(1); intList.add(6); intList.add(3); intList.add(2); for (int i=0;i<intList.size();i++) { System.out.println(intList.get(i)); } intList.transformValues(new TIntFunction() { @Override public int execute(int v) { return v * 2; } }); System.out.println(intList.toString()); intList.sort(); System.out.println(intList.toString()); int[] arr = intList.toArray(); for (int i=0;i<arr.length;i++) { System.out.println(arr[i]); } } }
執行結果:google
經過上面的代碼示例,能夠發現使用方式和jdk提供的集合使用方式一致,這也許就是trove說的,能夠用來替換對jdk集合的使用了。這裏它還提供了一些特殊的方法,好比transformValues,這個方法能夠根據你提供的TIntFunction來對TIntArrayList內部的值進行轉換。好比它還支持對內部元素直接排序,以及重載了toString方法,直接返回內部的元素。url
二、再看一個簡單的支持int,int的map:spa
import gnu.trove.map.TIntIntMap; import gnu.trove.map.hash.TIntIntHashMap; public class IntMap { public static void main(String[] args) { TIntIntMap intMap = new TIntIntHashMap(); intMap.put(0, 10); intMap.put(1, 10); intMap.put(2, 20); intMap.put(3, 30); System.out.println(intMap.get(0)); System.out.println(intMap.get(1)); System.out.println(intMap.get(2)); System.out.println(intMap.get(3)); } }
執行結果:設計
記得之前寫代碼的時候,但願能有一個支持int到int的map,可是在沒有更好的選擇以前,只能選擇使用Integer來實現,不過之後能夠使用這個庫了。trove提供了int到byte,int到float,int到long等多種map。code
暫時介紹到這了,後面有使用到再接着寫!