diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java index 07632a34..59987282 100644 --- a/src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java +++ b/src/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java @@ -30,6 +30,8 @@ import java.util.Map.Entry; 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.distance.PrimitiveDistanceQuery; import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance; import de.lmu.ifi.dbs.elki.utilities.datastructures.heap.KNNHeap; @@ -63,7 +65,8 @@ public class LinearScanPrimitiveDistanceKNNQuery<O, D extends Distance<D>> exten protected void linearScanBatchKNN(List<O> objs, List<KNNHeap<D>> heaps) { final int size = objs.size(); // Linear scan style KNN. - for(DBID candidateID : relation.iterDBIDs()) { + for(DBIDIter iter = relation.getDBIDs().iter(); iter.valid(); iter.advance()) { + DBID candidateID = iter.getDBID(); O candidate = relation.get(candidateID); for(int index = 0; index < size; index++) { O object = objs.get(index); @@ -74,7 +77,7 @@ public class LinearScanPrimitiveDistanceKNNQuery<O, D extends Distance<D>> exten } @Override - public KNNResult<D> getKNNForDBID(DBID id, int k) { + public KNNResult<D> getKNNForDBID(DBIDRef id, int k) { return getKNNForObject(relation.get(id), k); } @@ -83,9 +86,9 @@ public class LinearScanPrimitiveDistanceKNNQuery<O, D extends Distance<D>> exten final int size = ids.size(); final List<KNNHeap<D>> heaps = new ArrayList<KNNHeap<D>>(size); List<O> objs = new ArrayList<O>(size); - for(DBID id : ids) { + for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { heaps.add(new KNNHeap<D>(k)); - objs.add(relation.get(id)); + objs.add(relation.get(iter)); } linearScanBatchKNN(objs, heaps); |