summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java b/src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java
index 1179edb5..01deeaa0 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/knn/KNNUtil.java
@@ -23,7 +23,6 @@ package de.lmu.ifi.dbs.elki.database.query.knn;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import java.util.AbstractCollection;
import java.util.AbstractList;
import java.util.Iterator;
import java.util.List;
@@ -31,6 +30,7 @@ import java.util.List;
import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.query.DistanceResultPair;
import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
@@ -49,7 +49,7 @@ public final class KNNUtil {
*
* @param <D> Distance
*/
- protected static class KNNSubList<D extends Distance<D>> extends AbstractCollection<DistanceResultPair<D>> implements KNNResult<D> {
+ protected static class KNNSubList<D extends Distance<D>> extends AbstractList<DistanceResultPair<D>> implements KNNResult<D> {
/**
* Parameter k
*/
@@ -240,6 +240,18 @@ public final class KNNUtil {
public DBID getDBID() {
return cur.getDBID();
}
+
+ @Override
+ public boolean sameDBID(DBIDRef other) {
+ return getIntegerID() == other.getIntegerID();
+ }
+
+ @Override
+ public int compareDBID(DBIDRef o) {
+ final int thisVal = getIntegerID();
+ final int anotherVal = o.getIntegerID();
+ return (thisVal < anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1));
+ }
}
/**
@@ -284,9 +296,9 @@ public final class KNNUtil {
}
@Override
- public boolean contains(DBID o) {
- for(DBID id : this) {
- if(id.equals(o)) {
+ public boolean contains(DBIDRef o) {
+ for (DBIDIter iter = iter(); iter.valid(); iter.advance()) {
+ if(iter.sameDBID(o)) {
return true;
}
}
@@ -304,7 +316,7 @@ public final class KNNUtil {
*/
@Override
@Deprecated
- public int binarySearch(DBID key) {
+ public int binarySearch(DBIDRef key) {
throw new UnsupportedOperationException("Since the result is usually not sorted, a binary Search does not make sense!");
}
}