diff options
author | Erich Schubert <erich@debian.org> | 2012-06-02 17:47:03 +0200 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:32 +0000 |
commit | 593eae6c91717eb9f4ff5088ba460dd4210509c0 (patch) | |
tree | d97e8cefb48773a382542e9e9d4a6796202a044a /src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java | |
parent | e580e42664ca92fbf8792bc39b8d59383db829fe (diff) | |
parent | c36aa2a8fd31ca5e225ff30278e910070cd2c8c1 (diff) |
Import Debian changes 0.5.0~beta2-1
elki (0.5.0~beta2-1) unstable; urgency=low
* New upstream beta release.
* Needs GNU Trove 3, in NEW.
* Build with OpenJDK7, as OpenJDK6 complains.
elki (0.5.0~beta1-1) unstable; urgency=low
* New upstream beta release.
* Needs GNU Trove 3, not yet in Debian (private package)
* Build with OpenJDK7, as OpenJDK6 complains.
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java | 121 |
1 files changed, 104 insertions, 17 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java b/src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java index 77d5c063..67c84290 100644 --- a/src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java +++ b/src/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.ids.generic; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -23,13 +23,12 @@ package de.lmu.ifi.dbs.elki.database.ids.generic; along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import java.util.AbstractCollection; import java.util.BitSet; -import java.util.Collection; import java.util.Iterator; 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.DBIDs; /** @@ -39,7 +38,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * * @apiviz.uses de.lmu.ifi.dbs.elki.database.ids.DBIDs */ -public class MaskedDBIDs extends AbstractCollection<DBID> implements DBIDs, Collection<DBID> { +public class MaskedDBIDs implements DBIDs { /** * Data storage */ @@ -80,8 +79,13 @@ public class MaskedDBIDs extends AbstractCollection<DBID> implements DBIDs, Coll } @Override - public Collection<DBID> asCollection() { - return this; + public DBIDIter iter() { + if(inverse) { + return new InvDBIDItr(); + } + else { + return new DBIDItr(); + } } @Override @@ -94,6 +98,22 @@ public class MaskedDBIDs extends AbstractCollection<DBID> implements DBIDs, Coll } } + @Override + public boolean contains(DBID o) { + // TODO: optimize. + for(DBID id : this) { + if(id.equals(o)) { + return true; + } + } + return false; + } + + @Override + public boolean isEmpty() { + return size() == 0; + } + /** * Iterator over set bits * @@ -133,6 +153,47 @@ public class MaskedDBIDs extends AbstractCollection<DBID> implements DBIDs, Coll } /** + * Iterator over set bits + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + protected class DBIDItr implements DBIDIter { + /** + * Next position. + */ + private int pos; + + /** + * Constructor + */ + protected DBIDItr() { + this.pos = bits.nextSetBit(0); + } + + @Override + public boolean valid() { + return pos >= 0; + } + + @Override + public void advance() { + pos = bits.nextSetBit(pos + 1); + } + + @Override + public int getIntegerID() { + return data.get(pos).getIntegerID(); + } + + @Override + public DBID getDBID() { + return data.get(pos); + } + } + + /** * Iterator over unset elements. * * @author Erich Schubert @@ -170,18 +231,44 @@ public class MaskedDBIDs extends AbstractCollection<DBID> implements DBIDs, Coll } } - @Override - public boolean add(DBID e) { - throw new UnsupportedOperationException(); - } + /** + * Iterator over set bits + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + protected class InvDBIDItr implements DBIDIter { + /** + * Next position. + */ + private int pos; - @Override - public boolean remove(Object o) { - throw new UnsupportedOperationException(); - } + /** + * Constructor + */ + protected InvDBIDItr() { + this.pos = bits.nextClearBit(0); + } - @Override - public void clear() { - throw new UnsupportedOperationException(); + @Override + public boolean valid() { + return pos >= 0; + } + + @Override + public void advance() { + pos = bits.nextClearBit(pos + 1); + } + + @Override + public int getIntegerID() { + return data.get(pos).getIntegerID(); + } + + @Override + public DBID getDBID() { + return data.get(pos); + } } } |