2012-07-24 20 views
0

有沒有一種有效的方式將Trove地圖中的所有值設置爲零?有沒有一種有效的方法將Trove地圖中的所有值設置爲零?

現在我這樣做:

public static class NcZeroD implements TDoubleProcedure{ 
     public TDoubleDoubleHashMap map; 

     @Override 
     public boolean execute(double k) { 
      map.put(k, 0); 
      return true; 
     } 
    } 

    static NcZeroD ncZeroD=new NcZeroD(); 

    public static void zero(TDoubleDoubleHashMap map){ 
     ncZeroD.map=map; 
     map.forEachKey(ncZeroD); 
    } 

但似乎有點凌亂。

回答

1

它,如果你使用至少有一點清潔transformValues()而不是forEachKey()

private static final TDoubleFunction TO_ZERO = new TDoubleFunction() { 
    @Override 
    public double execute(double value) { 
     return 0; 
    } 
}; 

public static void zero(TDoubleDoubleHashMap map) { 
    map.transformValues(TO_ZERO); 
} 

我不認爲你會看到一個更有效的解決方案 - 在某些時候,有些事情遍歷所有的價值。

相關問題