@Override public void setFromDouble(int i, double v) { values.set(i, (double) v); }
@Override public SparseDoubleArray concatenate(SparseDoubleArray... ins) { final SparseDoubleArray result = copy(); for (int i=0; i<ins.length; i++) { final int oldLength = result.length; result.setLength(oldLength + ins[i].length); for (Entry e : ins[i].entries()) { result.set(e.index + oldLength, e.value); } } return result; }
@Override public SparseDoubleArray concatenate(List<SparseDoubleArray> ins) { final SparseDoubleArray result = copy(); for (int i=0; i<ins.size(); i++) { final int oldLength = result.length; result.setLength(oldLength + ins.get(i).length); for (Entry e : ins.get(i).entries()) { result.set(e.index + oldLength, e.value); } } return result; } }
@Override public void setFromDouble(int i, double v) { values.set(i, (double) v); }
/** * Concatenate multiple arrays into a single new array. * * @param arrays the arrays to concatenate. * @return the new concatenated array */ public static SparseDoubleArray concatenateArrays(SparseDoubleArray... arrays) { SparseDoubleArray concat = arrays[0].copy(); for (int i=1; i<arrays.length; i++) { if (arrays[i] != null) { int oldLength = concat.length; concat.setLength(oldLength + arrays[i].length); for (Entry e : arrays[i].entries()) concat.set(e.index + oldLength, e.value); } } return concat; }
@Override public void readBinary(DataInput in) throws IOException { this.length = in.readInt(); int used = in.readInt(); for (int i=0; i<used; i++) { set(in.readInt(), in.readDouble()); } }
@Override public void readASCII(Scanner in) throws IOException { this.length = in.nextInt(); String[] parts = in.nextLine().split(" "); for (String part : parts) { String[] bits = part.split(":"); set(Integer.parseInt(bits[0]), Double.parseDouble(bits[1])); } }
/** * Multiply the values inplace by a scalar and return this * @param value scalar multiplier * @return this */ public SparseDoubleArray multiplyInplace(double value) { for (Entry e : entries()) { if (this.isUsed(e.index)) set(e.index, (double)(value * e.value)); } return this; }