diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/data/ByteVector.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/data/ByteVector.java | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/data/ByteVector.java b/src/de/lmu/ifi/dbs/elki/data/ByteVector.java index 10442a3f..e97d0f0f 100644 --- a/src/de/lmu/ifi/dbs/elki/data/ByteVector.java +++ b/src/de/lmu/ifi/dbs/elki/data/ByteVector.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.data; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2013 + Copyright (C) 2014 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -27,19 +27,18 @@ import java.io.IOException; import java.nio.ByteBuffer; import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector; -import de.lmu.ifi.dbs.elki.persistent.ByteArrayUtil; -import de.lmu.ifi.dbs.elki.persistent.ByteBufferSerializer; import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.ArrayAdapter; import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.NumberArrayAdapter; +import de.lmu.ifi.dbs.elki.utilities.io.ByteArrayUtil; +import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; /** - * A ByteVector stores the data using bytes. This is beneficial e.g. when using - * SIFT vectors based on byte values. + * Vector using {@code byte[]} storage. * * @author Erich Schubert */ -public class ByteVector extends AbstractNumberVector<Byte> { +public class ByteVector extends AbstractNumberVector { /** * Static instance (object factory). */ @@ -67,16 +66,17 @@ public class ByteVector extends AbstractNumberVector<Byte> { * @param nocopy Flag to use without copying. */ private ByteVector(byte[] values, boolean nocopy) { - if (nocopy) { + if(nocopy) { this.values = values; - } else { + } + else { this.values = new byte[values.length]; System.arraycopy(values, 0, this.values, 0, values.length); } } /** - * Provides an ByteVector consisting of the given Byte values. + * Create an ByteVector consisting of the given Byte values. * * @param values the values to be set as values of the ByteVector */ @@ -125,7 +125,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { @Override public Vector getColumnVector() { double[] data = new double[values.length]; - for (int i = 0; i < values.length; i++) { + for(int i = 0; i < values.length; i++) { data[i] = values[i]; } return new Vector(data); @@ -134,9 +134,9 @@ public class ByteVector extends AbstractNumberVector<Byte> { @Override public String toString() { StringBuilder featureLine = new StringBuilder(); - for (int i = 0; i < values.length; i++) { + for(int i = 0; i < values.length; i++) { featureLine.append(values[i]); - if (i + 1 < values.length) { + if(i + 1 < values.length) { featureLine.append(ATTRIBUTE_SEPARATOR); } } @@ -150,13 +150,13 @@ public class ByteVector extends AbstractNumberVector<Byte> { * * @apiviz.has ByteVector */ - public static class Factory extends AbstractNumberVector.Factory<ByteVector, Byte> { + public static class Factory extends AbstractNumberVector.Factory<ByteVector> { @Override - public <A> ByteVector newFeatureVector(A array, ArrayAdapter<Byte, A> adapter) { + public <A> ByteVector newFeatureVector(A array, ArrayAdapter<? extends Number, A> adapter) { int dim = adapter.size(array); byte[] values = new byte[dim]; - for (int i = 0; i < dim; i++) { - values[i] = adapter.get(array, i); + for(int i = 0; i < dim; i++) { + values[i] = adapter.get(array, i).byteValue(); } return new ByteVector(values, true); } @@ -165,7 +165,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { public <A> ByteVector newNumberVector(A array, NumberArrayAdapter<?, ? super A> adapter) { int dim = adapter.size(array); byte[] values = new byte[dim]; - for (int i = 0; i < dim; i++) { + for(int i = 0; i < dim; i++) { values[i] = adapter.getByte(array, i); } return new ByteVector(values, true); @@ -210,7 +210,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { final byte dimensionality = buffer.get(); assert (buffer.remaining() >= ByteArrayUtil.SIZE_BYTE * dimensionality); final byte[] values = new byte[dimensionality]; - for (int i = 0; i < dimensionality; i++) { + for(int i = 0; i < dimensionality; i++) { values[i] = buffer.get(); } return new ByteVector(values, true); @@ -221,7 +221,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { assert (vec.values.length < Byte.MAX_VALUE) : "This serializer only supports a maximum dimensionality of " + Byte.MAX_VALUE + "!"; assert (buffer.remaining() >= ByteArrayUtil.SIZE_BYTE * vec.values.length); buffer.put((byte) vec.values.length); - for (int i = 0; i < vec.values.length; i++) { + for(int i = 0; i < vec.values.length; i++) { buffer.put(vec.values[i]); } } @@ -248,7 +248,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { final short dimensionality = buffer.getShort(); assert (buffer.remaining() >= ByteArrayUtil.SIZE_BYTE * dimensionality); final byte[] values = new byte[dimensionality]; - for (int i = 0; i < dimensionality; i++) { + for(int i = 0; i < dimensionality; i++) { values[i] = buffer.get(); } return new ByteVector(values, true); @@ -259,7 +259,7 @@ public class ByteVector extends AbstractNumberVector<Byte> { assert (vec.values.length < Short.MAX_VALUE) : "This serializer only supports a maximum dimensionality of " + Short.MAX_VALUE + "!"; assert (buffer.remaining() >= ByteArrayUtil.SIZE_BYTE * vec.values.length); buffer.putShort((short) vec.values.length); - for (int i = 0; i < vec.values.length; i++) { + for(int i = 0; i < vec.values.length; i++) { buffer.put(vec.values[i]); } } |