@Override public boolean execute(int word, int count) { d.values.set(word, count); return true; } });
@Override public SparseIntArray concatenate(SparseIntArray... ins) { final SparseIntArray 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 void setFromDouble(int i, double v) { values.set(i, (int) v); }
@Override public SparseIntArray concatenate(List<SparseIntArray> ins) { final SparseIntArray 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, (int) v); }
/** * Concatenate multiple arrays into a single new array. * * @param arrays the arrays to concatenate. * @return the new concatenated array */ public static SparseIntArray concatenateArrays(SparseIntArray... arrays) { SparseIntArray 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.readInt()); } }
@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]), Integer.parseInt(bits[1])); } }
/** * Multiply the values inplace by a scalar and return this * @param value scalar multiplier * @return this */ public SparseIntArray multiplyInplace(double value) { for (Entry e : entries()) { if (this.isUsed(e.index)) set(e.index, (int)(value * e.value)); } return this; }
/** * sets a word in the document's count. * @param word * @param count */ public void setWordCount(int word, int count){ if(this.getVector().isUsed(word)){ this.length -= this.getVector().get(word); } this.length += this.getVector().set(word, count); }