diff options
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids')
65 files changed, 165 insertions, 91 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java index c48e575d..8fc27ff3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Interface for array based DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DBIDArrayIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java index 498d090a..c879ae95 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java @@ -28,6 +28,7 @@ import java.util.Comparator; * Array-oriented implementation of a modifiable DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DBIDArrayMIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java index 7331edce..623b102d 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Unmodifiable, indexed DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ public interface ArrayStaticDBIDs extends ArrayDBIDs, StaticDBIDs { // empty. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java index 3fb4cc93..66001a7a 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java @@ -34,6 +34,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * consistent across multiple results/databases. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java index 9168e7c6..0f638fe0 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.ArrayIter; * Array iterators that can also go backwards and seek. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDArrayIter extends DBIDIter, ArrayIter { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java index e4bca297..5da6b6ae 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable array iterator. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDArrayMIter extends DBIDArrayIter, DBIDMIter { // Nothing new, see {@link DBIDArrayIter} and {@link DBIDMIter} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java index dc424b71..6ac06aab 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * instance to use. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses DBID oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java index d2c816a2..f9e9e381 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter; * </ul> * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java index d52e87ed..7dc3dca6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.MIter; * Modifiable DBID iterator. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDMIter extends DBIDIter, MIter { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java index 29d993ea..675f8810 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * using {@link de.lmu.ifi.dbs.elki.utilities.pairs.Pair} * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.ids.DBID */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java index 710ec3c6..1e515893 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap; * Static DBID range. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDRange extends ArrayStaticDBIDs, DataStoreIDMap { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java index 80b69a1e..7f051e35 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * are a good example how the DBIDRef may change. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java index ae85fa12..c9f2c1f1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java @@ -41,11 +41,12 @@ import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer; /** * DBID Utility functions. - * + * * @author Erich Schubert - * + * @since 0.4.0 + * * @apiviz.landmark - * + * * @apiviz.has DBIDs * @apiviz.has DBIDRef * @apiviz.composedOf DBIDFactory @@ -65,7 +66,7 @@ public final class DBIDUtil { /** * Get the invalid special ID. - * + * * @return invalid ID value */ public static DBIDRef invalid() { @@ -74,9 +75,9 @@ public final class DBIDUtil { /** * Import and integer as DBID. - * + * * Note: this may not be possible for some factories! - * + * * @param id Integer ID to import * @return DBID */ @@ -86,9 +87,9 @@ public final class DBIDUtil { /** * Export a DBID as int. - * + * * Note: this may not be possible for some factories! - * + * * @param id DBID to export * @return integer value */ @@ -98,7 +99,7 @@ public final class DBIDUtil { /** * Compare two DBIDs. - * + * * @param id1 First ID * @param id2 Second ID * @return Comparison result @@ -109,7 +110,7 @@ public final class DBIDUtil { /** * Test two DBIDs for equality. - * + * * @param id1 First ID * @param id2 Second ID * @return Comparison result @@ -120,7 +121,7 @@ public final class DBIDUtil { /** * Dereference a DBID reference. - * + * * @param ref DBID reference * @return DBID */ @@ -133,7 +134,7 @@ public final class DBIDUtil { /** * Format a DBID as string. - * + * * @param id DBID * @return String representation */ @@ -143,7 +144,7 @@ public final class DBIDUtil { /** * Format a DBID as string. - * + * * @param ids DBIDs * @return String representation */ @@ -163,7 +164,7 @@ public final class DBIDUtil { /** * Get a serializer for DBIDs. - * + * * @return DBID serializer */ public static ByteBufferSerializer<DBID> getDBIDSerializer() { @@ -172,7 +173,7 @@ public final class DBIDUtil { /** * Get a serializer for DBIDs with static size. - * + * * @return DBID serializer */ public static ByteBufferSerializer<DBID> getDBIDSerializerStatic() { @@ -181,7 +182,7 @@ public final class DBIDUtil { /** * Generate a single DBID. - * + * * @return A single DBID */ public static DBID generateSingleDBID() { @@ -190,7 +191,7 @@ public final class DBIDUtil { /** * Return a single DBID for reuse. - * + * * @param id DBID to deallocate */ public static void deallocateSingleDBID(DBID id) { @@ -199,7 +200,7 @@ public final class DBIDUtil { /** * Generate a static DBID range. - * + * * @param size Requested size * @return DBID range */ @@ -209,7 +210,7 @@ public final class DBIDUtil { /** * Deallocate a static DBID range. - * + * * @param range Range to deallocate */ public static void deallocateDBIDRange(DBIDRange range) { @@ -218,7 +219,7 @@ public final class DBIDUtil { /** * Make a new DBID variable. - * + * * @param val Initial value. * @return Variable */ @@ -228,7 +229,7 @@ public final class DBIDUtil { /** * Make a new DBID variable. - * + * * @return Variable */ public static DBIDVar newVar() { @@ -237,7 +238,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @return New array */ public static ArrayModifiableDBIDs newArray() { @@ -246,7 +247,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @return New hash set */ public static HashSetModifiableDBIDs newHashSet() { @@ -255,7 +256,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @param size Size hint * @return New array */ @@ -265,7 +266,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @param size Size hint * @return New hash set */ @@ -275,7 +276,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @param existing Existing DBIDs * @return New array */ @@ -285,7 +286,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @param existing Existing DBIDs * @return New hash set */ @@ -295,7 +296,7 @@ public final class DBIDUtil { /** * Compute the set intersection of two sets. - * + * * @param first First set * @param second Second set * @return result. @@ -316,7 +317,7 @@ public final class DBIDUtil { /** * Compute the set intersection size of two sets. - * + * * @param first First set * @param second Second set * @return size @@ -345,7 +346,7 @@ public final class DBIDUtil { /** * Compute the set intersection size of two sets. - * + * * @param first First set * @param second Second set * @return size @@ -362,7 +363,7 @@ public final class DBIDUtil { /** * Compute the set symmetric intersection of two sets. - * + * * @param first First set * @param second Second set * @param firstonly OUTPUT: elements only in first. MUST BE EMPTY @@ -393,7 +394,7 @@ public final class DBIDUtil { /** * Returns the union of the two specified collection of IDs. - * + * * @param ids1 the first collection * @param ids2 the second collection * @return the union of ids1 and ids2 without duplicates @@ -407,7 +408,7 @@ public final class DBIDUtil { /** * Returns the difference of the two specified collection of IDs. - * + * * @param ids1 the first collection * @param ids2 the second collection * @return the difference of ids1 minus ids2 @@ -420,7 +421,7 @@ public final class DBIDUtil { /** * Wrap an existing DBIDs collection to be unmodifiable. - * + * * @param existing Existing collection * @return Unmodifiable collection */ @@ -442,7 +443,7 @@ public final class DBIDUtil { /** * Ensure that the given DBIDs are array-indexable. - * + * * @param ids IDs * @return Array DBIDs. */ @@ -457,7 +458,7 @@ public final class DBIDUtil { /** * Ensure that the given DBIDs support fast "contains" operations. - * + * * @param ids IDs * @return Set DBIDs. */ @@ -472,7 +473,7 @@ public final class DBIDUtil { /** * Ensure modifiable. - * + * * @param ids IDs * @return Modifiable DBIDs. */ @@ -493,10 +494,10 @@ public final class DBIDUtil { /** * Make a DBID pair. - * + * * @param id1 first ID * @param id2 second ID - * + * * @return DBID pair */ public static DBIDPair newPair(DBIDRef id1, DBIDRef id2) { @@ -505,7 +506,7 @@ public final class DBIDUtil { /** * Make a DoubleDBIDPair. - * + * * @param val double value * @param id ID * @return new pair @@ -516,9 +517,9 @@ public final class DBIDUtil { /** * Create an appropriate heap for the distance type. - * + * * This will use a double heap if appropriate. - * + * * @param k K value * @return New heap of size k, appropriate for this distance type. */ @@ -528,7 +529,7 @@ public final class DBIDUtil { /** * Build a new heap from a given list. - * + * * @param exist Existing result * @return New heap */ @@ -538,7 +539,7 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * + * * @param ids Original DBIDs * @param rnd Random generator */ @@ -548,7 +549,7 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * + * * @param ids Original DBIDs * @param random Random generator */ @@ -558,22 +559,24 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * - * Only the first {@code limit} elements will be randomized. - * + * + * Only the first {@code limit} elements will be fully randomized, but the + * remaining objects will also be changed. + * * @param ids Original DBIDs * @param random Random generator * @param limit Shuffling limit. */ public static void randomShuffle(ArrayModifiableDBIDs ids, Random random, final int limit) { + final int end = ids.size(); for(int i = 1; i < limit; i++) { - ids.swap(i - 1, i + random.nextInt(limit - i)); + ids.swap(i - 1, i + random.nextInt(end - i)); } } /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param seed Random generator seed @@ -585,7 +588,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param seed Random generator seed @@ -602,7 +605,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param rnd Random generator @@ -614,7 +617,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param random Random generator @@ -645,7 +648,7 @@ public final class DBIDUtil { ArrayModifiableDBIDs sample = DBIDUtil.newArray(source); randomShuffle(sample, random, k); // Delete trailing elements - for(int i = sample.size() - 1; i > k; i--) { + for(int i = sample.size() - 1; i >= k; i--) { sample.remove(i); } return sample; @@ -654,7 +657,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param ids Original ids * @param rate Sampling rate * @param random Random generator @@ -666,7 +669,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param ids Original ids * @param rate Sampling rate * @param random Random generator @@ -711,7 +714,7 @@ public final class DBIDUtil { /** * Randomly split IDs into {@code p} partitions of almost-equal size. - * + * * @param ids Original DBIDs * @param p Desired number of partitions. * @param rnd Random generator @@ -722,7 +725,7 @@ public final class DBIDUtil { /** * Randomly split IDs into {@code p} partitions of almost-equal size. - * + * * @param oids Original DBIDs * @param p Desired number of partitions. * @param random Random generator @@ -752,7 +755,7 @@ public final class DBIDUtil { /** * Get a subset of the KNN result. - * + * * @param list Existing list * @param k k * @return Subset @@ -769,7 +772,7 @@ public final class DBIDUtil { /** * Create a modifiable list to store distance-DBID pairs. - * + * * @param size Estimated upper list size * @return Empty list */ @@ -779,7 +782,7 @@ public final class DBIDUtil { /** * Create a modifiable list to store distance-DBID pairs. - * + * * @return Empty list */ public static ModifiableDoubleDBIDList newDistanceDBIDList() { @@ -788,7 +791,7 @@ public final class DBIDUtil { /** * Assert that the presented ids constitute a continuous {@link DBIDRange}. - * + * * @param ids ID range. * @return DBID range. * @throws AbortException diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java index adfa9aed..80dfaf53 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DBIDDataStore; * candidate. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDVar extends DBIDRef, ArrayDBIDs, SetDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java index 47ab6c2b..95a07f80 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Interface for a collection of database references (IDs). * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.composedOf DBID diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java index 4ac19f95..355f9c17 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java @@ -50,6 +50,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * </pre> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java index 92fe9233..6435a048 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * {@link de.lmu.ifi.dbs.elki.database.ids.DBIDRef}. * * @author Erich Schubert + * @since 0.3 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java index 0e371ff8..638c32ee 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java @@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable DBIDList iterator. * * @author Erich Schubert + * @since 0.2 */ public interface DoubleDBIDListMIter extends DoubleDBIDListIter, DBIDArrayMIter { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java index 725861d6..1a49ad56 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java @@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * object reference. * * @author Erich Schubert + * @since 0.2 */ public interface DoubleDBIDPair extends DBIDRef, Comparable<DoubleDBIDPair> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java index 5c1c3e2d..444b632c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * Empty DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf EmptyDBIDIterator */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java index c7deb732..e5a3c4d3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Hash-organized DBIDs * * @author Erich Schubert + * @since 0.4.0 */ public interface HashSetDBIDs extends SetDBIDs { // Empty marker interface diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java index e5cde131..f3a43b8b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Set-oriented implementation of a modifiable DBID collection. * * @author Erich Schubert + * @since 0.4.0 */ public interface HashSetModifiableDBIDs extends HashSetDBIDs, ModifiableDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java index f2ae4c0e..73fddbb2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * {@link de.lmu.ifi.dbs.elki.database.ids.DBIDUtil#newHeap}! * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java index 94c26a5f..f23e81e2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java @@ -51,6 +51,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * </pre> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java index fa88c373..f59f1d92 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java @@ -25,43 +25,46 @@ package de.lmu.ifi.dbs.elki.database.ids; /** * Interface for a generic modifiable DBID collection. - * + * * Note: we had this use the Java Collections API for a long time, however this * prevented certain optimizations. So it now only mimics the Collections API * <em>deliberately</em>. - * + * * @author Erich Schubert - * + * @since 0.4.0 + * * @apiviz.has DBIDMIter */ public interface ModifiableDBIDs extends DBIDs { /** * Add DBIDs to collection. - * + * * @param ids IDs to add. - * @return {@code true} when modified + * @return {@code true} if the collection changed. */ boolean addDBIDs(DBIDs ids); /** * Remove DBIDs from collection. - * + * * @param ids IDs to remove. - * @return {@code true} when modified + * @return {@code true} if the collection changed. */ boolean removeDBIDs(DBIDs ids); /** * Add a single DBID to the collection. - * + * * @param id ID to add + * @return {@code true} if the collection changed. */ boolean add(DBIDRef id); /** * Remove a single DBID from the collection. - * + * * @param id ID to remove + * @return {@code true} if the collection changed. */ boolean remove(DBIDRef id); @@ -72,9 +75,9 @@ public interface ModifiableDBIDs extends DBIDs { /** * Get a <em>modifiable</em> DBID iterator (a more efficient API). - * + * * usage example: - * + * * <pre> * {@code * for(DBIDMIter iter = ids.iter(); iter.valid(); iter.advance()) { @@ -83,7 +86,7 @@ public interface ModifiableDBIDs extends DBIDs { * } * } * </pre> - * + * * @return modifiable iterator */ @Override @@ -93,6 +96,8 @@ public interface ModifiableDBIDs extends DBIDs { * Pop (get and remove) one DBID from the set, into a variable. * * @param outvar Output variable + * @return Always {@code outvar}, for inlining + * @throws ArrayIndexOutOfBoundsException when empty. */ - void pop(DBIDVar outvar); + DBIDVar pop(DBIDVar outvar); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java index 964e18d0..8b4409ee 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable API for Distance-DBID results * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf DoubleDBIDPair */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java index bcae4fec..cead3cb6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java @@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * "contains" lookups. * * @author Erich Schubert + * @since 0.4.0 */ public interface SetDBIDs extends DBIDs { // empty marker interface diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java index f1b96812..3b4ccc16 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Unmodifiable DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ public interface StaticDBIDs extends DBIDs { // Empty marker interface. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java index 1563efd4..770c3792 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Sublist of an existing result to contain only the first k elements. * * @author Erich Schubert + * @since 0.5.5 */ public class KNNSubList implements KNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java index f71498bd..b61b2a98 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil; * View on an ArrayDBIDs masked using a BitMask for efficient mask changing. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DBIDs */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java index 637ad758..698e63ab 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ArrayDBIDs * @apiviz.has UnmodifiableDBIDArrayIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java index 16ff1f81..7ce291e8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DBIDs * @apiviz.has UnmodifiableDBIDIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java index cbf29e9c..6ad8c6fe 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * Abstract base class for DBID factories. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerDBID oneway - - «create» * @apiviz.uses IntegerDBIDPair oneway - - «create» @@ -83,7 +84,8 @@ abstract class AbstractIntegerDBIDFactory implements DBIDFactory { @Override public String toString(DBIDRef id) { - return (id != null) ? Integer.toString(id.internalGetIndex()) : "null"; + return (id != null && id.internalGetIndex() != Integer.MIN_VALUE) // + ? Integer.toString(id.internalGetIndex()) : "null"; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java index 835bcd8d..8aa6813c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Class using a primitive int[] array as storage. * * @author Erich Schubert + * @since 0.6.0 */ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayDBIDs { /** @@ -271,7 +272,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD } @Override - public void pop(DBIDVar var) { + public DBIDVar pop(DBIDVar var) { if(size == 0) { throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } @@ -282,6 +283,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD // less efficient, involves object creation. var.set(get(--size)); } + return var; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java index 210dbb15..fb171416 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * Static (no modifications allowed) set of Database Object IDs. * * @author Erich Schubert + * @since 0.4.0 */ class ArrayStaticIntegerDBIDs implements IntegerArrayStaticDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java index 7162dbc2..1fe22b71 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.heap.DoubleIntegerMaxHeap; * Class to efficiently manage a kNN heap. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.has DoubleIntegerDBIDKNNList * @apiviz.composedOf DoubleIntegerMaxHeap diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java index 449497d1..e0e891e3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter; * the results to be sorted! * * @author Erich Schubert + * @since 0.6.0 */ public class DoubleIntegerDBIDKNNList extends DoubleIntegerDBIDList implements IntegerDBIDKNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java index 6f551189..9c97f779 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.arrays.DoubleIntegerArrayQui * Class to store double distance, integer DBID results. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.uses DoubleIntegerArrayQuickSort */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java index 0cd7f33a..f944df03 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter; * Combination interface of the DoubleDBIDListIter with IntegerDBIDIter. * * @author Erich Schubert + * @since 0.7.0 */ public interface DoubleIntegerDBIDListIter extends DoubleDBIDListIter, IntegerDBIDIter { // No additional methods. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java index 82c0f184..4ddf7ba3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * order. * * @author Erich Schubert + * @since 0.6.0 */ class DoubleIntegerDBIDListKNNHeap extends DoubleIntegerDBIDKNNList implements KNNHeap { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java index 59824d85..d46b2952 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListMIter; * Combination interface for modifiable iterators. * * @author Erich Schubert + * @since 0.4.0 */ interface DoubleIntegerDBIDListMIter extends DoubleIntegerDBIDListIter, DoubleDBIDListMIter { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java index 7cb247ce..f18ab125 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair; * Pair containing a double value and an integer DBID. * * @author Erich Schubert + * @since 0.4.0 */ class DoubleIntegerDBIDPair implements DoubleDBIDPair, IntegerDBIDRef { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java index ee06d7fa..eb2c8267 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Currently unused, needs benchmarking. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.composedOf DoubleIntegerDBIDPair */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java index 990e572f..593ba6ed 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ModifiableDoubleDBIDList; * Currently unused. Needs benchmarking. * * @author Erich Schubert + * @since 0.6.0 */ class DoubleIntegerDBIDPairList implements ModifiableDoubleDBIDList, IntegerDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java index 4afc942a..3f93a4b9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs; * Trivial combination interface. * * @author Erich Schubert + * @since 0.4.0 */ public interface IntegerArrayDBIDs extends IntegerDBIDs, ArrayDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java index fac20bca..c3ba28da 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayStaticDBIDs; * Combination of {@link ArrayStaticDBIDs} and {@link IntegerDBIDs}. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerArrayStaticDBIDs extends ArrayStaticDBIDs, IntegerArrayDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java index bdc5196b..11cc8c07 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java @@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * consistent across multiple results/databases. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf DynamicSerializer * @apiviz.composedOf StaticSerializer @@ -100,7 +101,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public String toString() { - return Integer.toString(id); + return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null"; } @Override @@ -111,11 +112,11 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override @Deprecated public boolean equals(Object obj) { - if (this == obj) { + if(this == obj) { return true; } - if (!(obj instanceof IntegerDBID)) { - if (obj instanceof DBIDRef) { + if(!(obj instanceof IntegerDBID)) { + if(obj instanceof DBIDRef) { LoggingUtil.warning("Programming error: DBID.equals(DBIDRef) is not well-defined. Use DBIDUtil.equal() instead!", new Throwable()); } return false; @@ -137,7 +138,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public DBID get(int i) { - if (i != 0) { + if(i != 0) { throw new ArrayIndexOutOfBoundsException(); } return this; @@ -145,7 +146,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public DBIDVar assignVar(int index, DBIDVar var) { - if (index != 0) { + if(index != 0) { throw new ArrayIndexOutOfBoundsException(); } var.set(this); @@ -165,9 +166,10 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public ArrayDBIDs slice(int begin, int end) { - if (begin == 0 && end == 1) { + if(begin == 0 && end == 1) { return this; - } else { + } + else { return DBIDUtil.EMPTYDBIDS; } } @@ -232,7 +234,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public boolean equals(Object other) { - if (other instanceof DBID) { + if(other instanceof DBID) { LoggingUtil.warning("Programming error detected: DBIDItr.equals(DBID). Use sameDBID()!", new Throwable()); } return super.equals(other); diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java index f0ac9928..4b120c8c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayIter; * Modifiable integer array iterator. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDArrayIter extends IntegerDBIDIter, DBIDArrayIter { // Empty diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java index c9234060..946484ec 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayMIter; * Modifiable integer array iterator. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDArrayMIter extends IntegerDBIDArrayIter, IntegerDBIDMIter, DBIDArrayMIter { // Empty diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java index bfbde351..7e020554 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference; * </p> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.uses IntegerArrayDBIDs */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java index 687a64b2..08b7fa01 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; * Iterator for integer DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java index 3fb0d381..c71253de 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Combination interface for KNNList and IntegerDBIDs. * * @author Erich Schubert + * @since 0.7.0 */ public interface IntegerDBIDKNNList extends KNNList, DoubleDBIDList, IntegerDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java index 4d1095e0..ac050ab9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair; * Sublist of an existing result to contain only the first k elements. * * @author Erich Schubert + * @since 0.5.5 */ public class IntegerDBIDKNNSubList implements IntegerDBIDKNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java index 6bf1cffd..bf6bfcd8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDMIter; * Modifiable iterator interface for integer DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDMIter extends DBIDMIter, IntegerDBIDIter { // Empty. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java index cd50f00e..5ed718d3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * DBID pair using two ints for storage. * * @author Erich Schubert + * @since 0.4.0 */ class IntegerDBIDPair implements DBIDPair, IntegerDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java index 2b790fb5..b7a21419 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.SetDBIDs; * Representing a DBID range allocation. * * @author Erich Schubert + * @since 0.4.0 */ final class IntegerDBIDRange implements IntegerDBIDs, DBIDRange, SetDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java index da21b007..e2cb0b2e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * DBID reference that references an integer value. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java index 12e320e9..b2721a20 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * should come for free! * * @author Erich Schubert + * @since 0.4.0 */ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs { /** @@ -165,7 +166,7 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs { @Override public String toString() { - return Integer.toString(id); + return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null"; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java index 3146f829..50c2b950 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Integer DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has IntegerDBIDIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java index 02819f0f..ac4715a8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * TODO: manage fragmentation of ranges? * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java index b49ab39a..99b96b03 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * negative values. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java index c3e77e99..e9c3b30c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * sequence. All IDs will be positive. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java index 2fc54afd..912a501b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter; * Implementation using GNU Trove Int Hash Sets. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has Itr */ @@ -158,7 +159,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID } @Override - public void pop(DBIDVar outvar) { + public DBIDVar pop(DBIDVar outvar) { if(store.size() == 0) { throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } @@ -167,9 +168,8 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID while(i-- > 0 && (states[i] != TPrimitiveHash.FULL)) { ; // Not occupied. Continue } - if(i < 0) { - outvar.unset(); - return; + if(i < 0) { // Should never happen because size > 0 + throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } final int val = store._set[i]; if(outvar instanceof IntegerDBIDVar) { @@ -180,6 +180,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID } // Unfortunately, not visible: store.removeAt(i); store.remove(val); + return outvar; } /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java index b7c1fb87..402b780e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerArrayDBIDs * @apiviz.has UnmodifiableDBIDIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java index 2c4ad2f6..cd48f2b3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerDBIDs * @apiviz.has UnmodifiableDBIDIter |