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 に答える