diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/data/ShortVector.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/data/ShortVector.java | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/data/ShortVector.java b/src/de/lmu/ifi/dbs/elki/data/ShortVector.java index fe82abe7..da3d4348 100644 --- a/src/de/lmu/ifi/dbs/elki/data/ShortVector.java +++ b/src/de/lmu/ifi/dbs/elki/data/ShortVector.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,18 +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; /** - * An ShortVector is to store Short values. + * Vector type using {@code short[]} storage. * * @author Erich Schubert */ -public class ShortVector extends AbstractNumberVector<Short> { +public class ShortVector extends AbstractNumberVector { /** * Static instance (object factory). */ @@ -66,22 +66,22 @@ public class ShortVector extends AbstractNumberVector<Short> { * @param nocopy Flag to use without copying. */ private ShortVector(short[] values, boolean nocopy) { - if (nocopy) { + if(nocopy) { this.values = values; - } else { + } + else { this.values = new short[values.length]; System.arraycopy(values, 0, this.values, 0, values.length); } } /** - * Provides an ShortVector consisting of the given Short values. + * Create an ShortVector consisting of the given Short values. * * @param values the values to be set as values of the ShortVector */ public ShortVector(short[] values) { - this.values = new short[values.length]; - System.arraycopy(values, 0, this.values, 0, values.length); + this.values = values.clone(); } @Override @@ -140,7 +140,7 @@ public class ShortVector extends AbstractNumberVector<Short> { @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); @@ -149,9 +149,9 @@ public class ShortVector extends AbstractNumberVector<Short> { @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); } } @@ -165,13 +165,13 @@ public class ShortVector extends AbstractNumberVector<Short> { * * @apiviz.has ShortVector */ - public static class Factory extends AbstractNumberVector.Factory<ShortVector, Short> { + public static class Factory extends AbstractNumberVector.Factory<ShortVector> { @Override - public <A> ShortVector newFeatureVector(A array, ArrayAdapter<Short, A> adapter) { + public <A> ShortVector newFeatureVector(A array, ArrayAdapter<? extends Number, A> adapter) { int dim = adapter.size(array); short[] values = new short[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).shortValue(); } return new ShortVector(values, true); } @@ -180,7 +180,7 @@ public class ShortVector extends AbstractNumberVector<Short> { public <A> ShortVector newNumberVector(A array, NumberArrayAdapter<?, ? super A> adapter) { int dim = adapter.size(array); short[] values = new short[dim]; - for (int i = 0; i < dim; i++) { + for(int i = 0; i < dim; i++) { values[i] = adapter.getShort(array, i); } return new ShortVector(values, true); @@ -226,7 +226,7 @@ public class ShortVector extends AbstractNumberVector<Short> { final short dimensionality = buffer.getShort(); assert (buffer.remaining() >= ByteArrayUtil.SIZE_SHORT * dimensionality); final short[] values = new short[dimensionality]; - for (int i = 0; i < dimensionality; i++) { + for(int i = 0; i < dimensionality; i++) { values[i] = buffer.getShort(); } return new ShortVector(values, true); @@ -237,7 +237,7 @@ public class ShortVector extends AbstractNumberVector<Short> { assert (vec.values.length < Short.MAX_VALUE) : "This serializer only supports a maximum dimensionality of " + Short.MAX_VALUE + "!"; assert (buffer.remaining() >= ByteArrayUtil.SIZE_SHORT * 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.putShort(vec.values[i]); } } @@ -262,7 +262,7 @@ public class ShortVector extends AbstractNumberVector<Short> { final int dimensionality = ByteArrayUtil.readUnsignedVarint(buffer); assert (buffer.remaining() >= ByteArrayUtil.SIZE_INT * dimensionality); final short[] values = new short[dimensionality]; - for (int i = 0; i < dimensionality; i++) { + for(int i = 0; i < dimensionality; i++) { values[i] = (short) ByteArrayUtil.readSignedVarint(buffer); } return new ShortVector(values, true); @@ -272,7 +272,7 @@ public class ShortVector extends AbstractNumberVector<Short> { public void toByteBuffer(ByteBuffer buffer, ShortVector vec) throws IOException { assert (vec.values.length < Short.MAX_VALUE) : "This serializer only supports a maximum dimensionality of " + Short.MAX_VALUE + "!"; ByteArrayUtil.writeUnsignedVarint(buffer, vec.values.length); - for (int i = 0; i < vec.values.length; i++) { + for(int i = 0; i < vec.values.length; i++) { ByteArrayUtil.writeSignedVarint(buffer, vec.values[i]); } } @@ -281,7 +281,7 @@ public class ShortVector extends AbstractNumberVector<Short> { public int getByteSize(ShortVector vec) { assert (vec.values.length < Short.MAX_VALUE) : "This serializer only supports a maximum dimensionality of " + Short.MAX_VALUE + "!"; int len = ByteArrayUtil.getUnsignedVarintSize(vec.values.length); - for (int i = 0; i < vec.values.length; i++) { + for(int i = 0; i < vec.values.length; i++) { len += ByteArrayUtil.getSignedVarintSize(vec.values[i]); } return len; |