是否有一种有效的方法将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);
}
但似乎有些混乱。
答案 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);
}
我认为你不会看到更有效的解决方案 - 在某些时候,必须迭代所有的值。