2015-08-23 136 views
3

Java8,想在我的應用程序中比較Int2ObjectOpenHashMapfastutil庫)和HashMap<Integer, MyObj>的時間性能和內存消耗。以前我迭代如下Java標準的HashMap:如何在Java8中迭代fastutil hashmap?

HashMap<Integer, MyObj> myobjs = new HashMap<Integer, MyObj>(); 
// fill myobjs in 
for (Map.Entry<Integer, MyObj> obj : myobjs.entrySet()) { 
    ... 
} 

我如何可以遍歷(以最快的方式)的Int2ObjectOpenHashMap

回答

1

Int2ObjectOpenHashMap也實現entrySet(),所以你以相同的方式迭代。

2

嘗試:

Int2ObjectOpenHashMap<MyObj> myobjs = // ... 
for(Int2ObjectMap.Entry<MyObj> entry : myobjs.int2ObjectEntrySet()) { 
    int key = entry.getIntKey(); 
    MyObj obj = entry.getValue(); 
    // ... 
} 
1

你可以使用流和lambda表達式,

Int2ObjectOpenHashMap<Integer> myobjs = new Int2ObjectOpenHashMap<Integer>() ; 
myobjs.forEach((key,value)->{ 
    int key1 =key; 
    MyObj obj = value; 
}); 
myobjs.entrySet().forEach(x->{ 
    int key = x.getKey(); 
    MyObj obj =x.getValue(); 
}); 
myobjs.entrySet().stream().forEach(x->{ 
    int key = x.getKey(); 
    MyObj obj = x.getValue(); 
});e