/** OptimizedSparseDoubleMatrix1D.java
*
* @author Imran Mansuri
* @since 1.2
* @version 1.3
*/
package iitb.Utils;
import gnu.trove.map.hash.TIntDoubleHashMap;
import gnu.trove.procedure.TIntDoubleProcedure;
public class OptimizedSparseDoubleMatrix1D implements TIntDoubleProcedure{
TIntDoubleHashMap values;
ForEachNonZeroReadOnly applyNonZero;
public interface ForEachNonZeroReadOnly {
public void apply(int index,double value);
}
public OptimizedSparseDoubleMatrix1D(){
this(0);
}
public OptimizedSparseDoubleMatrix1D(int capacity){
applyNonZero = null;
values = new TIntDoubleHashMap(capacity);
}
public void setQuick(int index, double value){
values.put(index, value);
}
public double getQuick(int index){
return values.get(index);
}
public void forEachNonZero(ForEachNonZeroReadOnly applyNonZero){
this.applyNonZero = applyNonZero;
values.forEachEntry(this);
}
public boolean execute(int index, double value) {
applyNonZero.apply(index, value);
return true;
}
public void clear(){
values.clear();
}
}