1
package de.lmu.ifi.dbs.elki.distance.distanceresultlist;
4
This file is part of ELKI:
5
Environment for Developing KDD-Applications Supported by Index-Structures
8
Ludwig-Maximilians-Universität München
9
Lehr- und Forschungseinheit für Datenbanksysteme
12
This program is free software: you can redistribute it and/or modify
13
it under the terms of the GNU Affero General Public License as published by
14
the Free Software Foundation, either version 3 of the License, or
15
(at your option) any later version.
17
This program is distributed in the hope that it will be useful,
18
but WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
GNU Affero General Public License for more details.
22
You should have received a copy of the GNU Affero General Public License
23
along with this program. If not, see <http://www.gnu.org/licenses/>.
26
import java.util.ArrayList;
27
import java.util.Collections;
29
import de.lmu.ifi.dbs.elki.database.ids.DBIDFactory;
30
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
31
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
32
import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
33
import de.lmu.ifi.dbs.elki.database.ids.DoubleDistanceDBIDPair;
34
import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
37
* Default class to keep a list of distance-object pairs.
39
* @author Erich Schubert
41
* @apiviz.composedOf DoubleDistanceDBIDPair
42
* @apiviz.has DoubleDistanceDBIDResultIter
44
public class DoubleDistanceDBIDList implements ModifiableDistanceDBIDResult<DoubleDistance> {
48
final ArrayList<DoubleDistanceDBIDPair> storage;
53
public DoubleDistanceDBIDList() {
55
storage = new ArrayList<DoubleDistanceDBIDPair>();
61
* @param initialCapacity Capacity
63
public DoubleDistanceDBIDList(int initialCapacity) {
65
storage = new ArrayList<DoubleDistanceDBIDPair>(initialCapacity);
71
* @deprecated Pass a double value instead.
73
* @param dist Distance
78
public void add(DoubleDistance dist, DBIDRef id) {
79
storage.add(DBIDFactory.FACTORY.newDistancePair(dist.doubleValue(), id));
85
* @param dist Distance
88
public void add(double dist, DBIDRef id) {
89
storage.add(DBIDFactory.FACTORY.newDistancePair(dist, id));
95
* @param pair Pair to add
97
public void add(DoubleDistanceDBIDPair pair) {
103
Collections.sort(storage, DistanceDBIDResultUtil.distanceComparator());
108
return storage.size();
112
public DoubleDistanceDBIDPair get(int off) {
113
return storage.get(off);
117
public DoubleDistanceDBIDResultIter iter() {
122
public boolean contains(DBIDRef o) {
123
for(DBIDIter iter = iter(); iter.valid(); iter.advance()) {
124
if(DBIDUtil.equal(iter, o)) {
132
public boolean isEmpty() {
137
public String toString() {
138
return DistanceDBIDResultUtil.toString(this);
144
* @author Erich Schubert
148
protected class Iter implements DoubleDistanceDBIDResultIter {
155
public int internalGetIndex() {
156
return get(pos).internalGetIndex();
160
public boolean valid() {
165
public void advance() {
171
public DoubleDistance getDistance() {
172
return get(pos).getDistance();
176
public double doubleDistance() {
177
return get(pos).doubleDistance();
181
public DoubleDistanceDBIDPair getDistancePair() {
186
public String toString() {
187
return valid() ? getDistancePair().toString() : "null";
b'\\ No newline at end of file'