summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/data/ByteVector.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/data/ByteVector.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/data/ByteVector.java42
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]);
}
}