有没有一种有效的方法将Trove地图中的所有值设置为零?

时间:2012-07-24 13:22:56

标签: java trove4j

是否有一种有效的方法将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 个答案:

答案 0 :(得分: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);
}

我认为你不会看到更有效的解决方案 - 在某些时候,必须迭代所有的值。