/** * Construct from native array * @param values the array of values */ public SparseByteFV(byte[] values) { this.values = new SparseBinSearchByteArray(values); }
/** * Construct from an existing array of values * @param values the values */ public SparseBinSearchByteArray(byte[] values) { this(values.length); for (int i=0; i<values.length; i++) { if (values[i] != 0) set(i, values[i]); } }
@Override public byte set(int key, byte value) { if (key < 0 || key >= length) throw new IndexOutOfBoundsException(Integer.toString(key)); int spot = Arrays.binarySearch(keys, 0, used, key); if (spot >= 0) return values[spot] = value; else return update(-1 - spot, key, value); }
@Override public Iterable<DualEntry> unionEntries(final SparseByteArray otherArray) { if (otherArray instanceof SparseBinSearchByteArray) { return unionEntries((SparseBinSearchByteArray) otherArray); } return super.unionEntries(otherArray); }
@Override public byte increment(int key, byte value) { if (key < 0 || key >= length) throw new IndexOutOfBoundsException(Integer.toString(key)); int spot = Arrays.binarySearch(keys, 0, used, key); if (spot >= 0) return values[spot] += value; return update(-1 - spot, key, value); }
/** * Construct empty FV with given number of bins * @param nbins the number of bins in each dimension */ public SparseByteFV(int nbins) { values = new SparseBinSearchByteArray(nbins); }
/** * Construct empty FV with given number of bins * @param nbins the number of bins in each dimension */ public SparseByteFV(int nbins) { values = new SparseBinSearchByteArray(nbins); }
/** * Construct from native array * @param values the array of values */ public SparseByteFV(byte[] values) { this.values = new SparseBinSearchByteArray(values); }
@Override public SparseByteArray copy() { SparseBinSearchByteArray copy = new SparseBinSearchByteArray(length); copy.used = used; copy.keys = Arrays.copyOf(keys, keys.length); copy.values = Arrays.copyOf(values, values.length); return copy; }
@Override public void readBinary(DataInput in) throws IOException { values = new SparseBinSearchByteArray(0); values.readBinary(in); }
@Override public void readASCII(Scanner in) throws IOException { values = new SparseBinSearchByteArray(0); values.readASCII(in); }
@Override public void readBinary(DataInput in) throws IOException { values = new SparseBinSearchByteArray(0); values.readBinary(in); }
@Override public void readASCII(Scanner in) throws IOException { values = new SparseBinSearchByteArray(0); values.readASCII(in); }