diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike')
9 files changed, 76 insertions, 43 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java index f485e214..a08feb1a 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ArrayLikeUtil.java @@ -40,29 +40,29 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; */ public final class ArrayLikeUtil { /** - * Static instance for lists + * Static instance for lists. */ private static final ListArrayAdapter<Object> LISTADAPTER = new ListArrayAdapter<Object>(); /** - * Static instance for lists of numbers + * Static instance for lists of numbers. */ private static final NumberListArrayAdapter<Number> NUMBERLISTADAPTER = new NumberListArrayAdapter<Number>(); /** - * Static instance + * Static instance. */ - private final static IdentityArrayAdapter<?> IDENTITYADAPTER = new IdentityArrayAdapter<Object>(); + private static final IdentityArrayAdapter<?> IDENTITYADAPTER = new IdentityArrayAdapter<Object>(); /** - * Static instance + * Static instance. */ - private static final FeatureVectorAdapter<?> FEATUREVECTORADAPTER = new FeatureVectorAdapter<Number>(); + public static final FeatureVectorAdapter<?> FEATUREVECTORADAPTER = new FeatureVectorAdapter<Number>(); /** * Use a number vector in the array API. */ - private static final NumberVectorAdapter<?> NUMBERVECTORADAPTER = new NumberVectorAdapter<Double>(); + public static final NumberVectorAdapter<?> NUMBERVECTORADAPTER = new NumberVectorAdapter<Double>(); /** * Use a double array in the array API. @@ -83,6 +83,13 @@ public final class ArrayLikeUtil { * Use ArrayDBIDs as array. */ public static final ArrayDBIDsAdapter ARRAYDBIDADAPTER = new ArrayDBIDsAdapter(); + + /** + * Fake constructor. Do not instantiate! + */ + private ArrayLikeUtil() { + // Do not instantiate + } /** * Cast the static instance. @@ -124,7 +131,7 @@ public final class ArrayLikeUtil { * @return Instance */ @SuppressWarnings("unchecked") - public static <F> FeatureVectorAdapter<F> featureVectorAdapter(FeatureVector<?, F> prototype) { + public static <F> FeatureVectorAdapter<F> featureVectorAdapter(FeatureVector<F> prototype) { return (FeatureVectorAdapter<F>) FEATUREVECTORADAPTER; } @@ -135,7 +142,7 @@ public final class ArrayLikeUtil { * @return Instance */ @SuppressWarnings("unchecked") - public static <N extends Number> NumberVectorAdapter<N> numberVectorAdapter(NumberVector<?, N> prototype) { + public static <N extends Number> NumberVectorAdapter<N> numberVectorAdapter(NumberVector<N> prototype) { return (NumberVectorAdapter<N>) NUMBERVECTORADAPTER; } @@ -185,7 +192,7 @@ public final class ArrayLikeUtil { } /** - * Convert a numeric array-like to a <code>double[]</code> + * Convert a numeric array-like to a <code>double[]</code>. * * @param array Array-like * @param adapter Adapter @@ -215,12 +222,12 @@ public final class ArrayLikeUtil { * @param obj Object to convert * @return primitive double array */ - public static <N extends Number> double[] toPrimitiveDoubleArray(NumberVector<?, N> obj) { + public static <N extends Number> double[] toPrimitiveDoubleArray(NumberVector<N> obj) { return toPrimitiveDoubleArray(obj, numberVectorAdapter(obj)); } /** - * Convert a numeric array-like to a <code>float[]</code> + * Convert a numeric array-like to a <code>float[]</code>. * * @param array Array-like * @param adapter Adapter @@ -250,7 +257,7 @@ public final class ArrayLikeUtil { * @param obj Object to convert * @return primitive float array */ - public static <N extends Number> float[] toPrimitiveFloatArray(NumberVector<?, N> obj) { + public static <N extends Number> float[] toPrimitiveFloatArray(NumberVector<N> obj) { return toPrimitiveFloatArray(obj, numberVectorAdapter(obj)); } }
\ No newline at end of file diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java index 43419103..117f3845 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/DoubleArrayAdapter.java @@ -45,8 +45,9 @@ class DoubleArrayAdapter implements NumberArrayAdapter<Double, double[]> { } @Override + @Deprecated public Double get(double[] array, int off) throws IndexOutOfBoundsException { - return array[off]; + return Double.valueOf(array[off]); } @Override diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java index a195360b..491c4f95 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ExtendedArray.java @@ -68,13 +68,13 @@ public class ExtendedArray<T> implements ArrayAdapter<T, ExtendedArray<T>> { @Override public int size(ExtendedArray<T> array) { - assert (array == this); + assert (this == array); return size; } @Override public T get(ExtendedArray<T> array, int off) throws IndexOutOfBoundsException { - assert (array == this); + assert (this == array); if(off == size - 1) { return extra; } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java index 19c2ec19..38b662e8 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FeatureVectorAdapter.java @@ -34,7 +34,7 @@ import de.lmu.ifi.dbs.elki.data.FeatureVector; * * @param <F> Feature type */ -public class FeatureVectorAdapter<F> implements ArrayAdapter<F, FeatureVector<?, F>> { +public class FeatureVectorAdapter<F> implements ArrayAdapter<F, FeatureVector<F>> { /** * Constructor. * @@ -45,12 +45,12 @@ public class FeatureVectorAdapter<F> implements ArrayAdapter<F, FeatureVector<?, } @Override - public int size(FeatureVector<?, F> array) { + public int size(FeatureVector<F> array) { return array.getDimensionality(); } @Override - public F get(FeatureVector<?, F> array, int off) throws IndexOutOfBoundsException { + public F get(FeatureVector<F> array, int off) throws IndexOutOfBoundsException { return array.getValue(off); } -}
\ No newline at end of file +} diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java index 14d42dc5..ae501039 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/FloatArrayAdapter.java @@ -46,8 +46,9 @@ class FloatArrayAdapter implements NumberArrayAdapter<Float, float[]> { } @Override + @Deprecated public Float get(float[] array, int off) throws IndexOutOfBoundsException { - return array[off]; + return Float.valueOf(array[off]); } @Override diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java index 792fad0b..cba1e706 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/ListArrayAdapter.java @@ -1,4 +1,26 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike; +/* + This file is part of ELKI: + Environment for Developing KDD-Applications Supported by Index-Structures + + Copyright (C) 2012 + Ludwig-Maximilians-Universität München + Lehr- und Forschungseinheit für Datenbanksysteme + ELKI Development Team + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + */ import java.util.List; diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java index c75acd64..fd1e6636 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/NumberVectorAdapter.java @@ -1,7 +1,5 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike; -import de.lmu.ifi.dbs.elki.data.NumberVector; - /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures @@ -25,6 +23,8 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; along with this program. If not, see <http://www.gnu.org/licenses/>. */ +import de.lmu.ifi.dbs.elki.data.NumberVector; + /** * Adapter to use a feature vector as an array of features. * @@ -34,7 +34,7 @@ import de.lmu.ifi.dbs.elki.data.NumberVector; * * @param <N> Number type */ -public class NumberVectorAdapter<N extends Number> implements NumberArrayAdapter<N, NumberVector<?, N>> { +public class NumberVectorAdapter<N extends Number> implements NumberArrayAdapter<N, NumberVector<N>> { /** * Constructor. * @@ -45,42 +45,43 @@ public class NumberVectorAdapter<N extends Number> implements NumberArrayAdapter } @Override - public int size(NumberVector<?, N> array) { + public int size(NumberVector<N> array) { return array.getDimensionality(); } @Override - public N get(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { + @Deprecated + public N get(NumberVector<N> array, int off) throws IndexOutOfBoundsException { return array.getValue(off + 1); } @Override - public double getDouble(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.doubleValue(off + 1); + public double getDouble(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.doubleValue(off); } @Override - public float getFloat(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.floatValue(off + 1); + public float getFloat(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.floatValue(off); } @Override - public int getInteger(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.intValue(off + 1); + public int getInteger(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.intValue(off); } @Override - public short getShort(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.shortValue(off + 1); + public short getShort(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.shortValue(off); } @Override - public long getLong(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.longValue(off + 1); + public long getLong(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.longValue(off); } @Override - public byte getByte(NumberVector<?, N> array, int off) throws IndexOutOfBoundsException { - return array.byteValue(off + 1); + public byte getByte(NumberVector<N> array, int off) throws IndexOutOfBoundsException { + return array.byteValue(off); } -}
\ No newline at end of file +} diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java index b2958358..c607759f 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/SubsetArrayAdapter.java @@ -23,7 +23,7 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike; */ /** - * Subset array adapter (allows reordering and projection) + * Subset array adapter (allows reordering and projection). * * @author Erich Schubert * @@ -32,12 +32,12 @@ package de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike; */ public class SubsetArrayAdapter<T, A> implements ArrayAdapter<T, A> { /** - * Wrapped adapter + * Wrapped adapter. */ ArrayAdapter<T, ? super A> wrapped; /** - * Offsets to return + * Offsets to return. */ int[] offs; diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/TDoubleListAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/TDoubleListAdapter.java index 889c64e8..cee393ac 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/TDoubleListAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/arraylike/TDoubleListAdapter.java @@ -45,8 +45,9 @@ public class TDoubleListAdapter implements NumberArrayAdapter<Double, TDoubleLis } @Override + @Deprecated public Double get(TDoubleList array, int off) throws IndexOutOfBoundsException { - return array.get(off); + return Double.valueOf(array.get(off)); } @Override |