0

有没有一种有效的方法可以将 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);
    }

但它似乎有点乱。

4

1 回答 1

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);
}

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

于 2012-07-24T13:36:42.493 回答