sascha@3281: package de.intevation.flys.artifacts.model.sq; sascha@3281: sascha@3281: import java.util.ArrayList; sascha@3281: import java.util.Iterator; sascha@3281: import java.util.List; sascha@3281: sascha@3281: public class Sieve sascha@3281: { sascha@3281: public double [] fractionSizes; sascha@3281: sascha@3281: protected List> fractions; sascha@3281: sascha@3281: public Sieve() { sascha@3281: } sascha@3281: sascha@3281: public Sieve(double [] fractionSizes) { sascha@3281: this.fractionSizes = fractionSizes; sascha@3281: fractions = new ArrayList>(fractionSizes.length+1); sascha@3281: for (int i = fractionSizes.length; i >= 0; --i) { sascha@3281: fractions.add(new ArrayList()); sascha@3281: } sascha@3281: } sascha@3281: sascha@3281: public void sieve(Iterator sqs) { sascha@3281: OUTER: while (sqs.hasNext()) { sascha@3281: SQ sq = sqs.next(); sascha@3281: double q = sq.getQ(); sascha@3281: for (int i = 0; i < fractionSizes.length; ++i) { sascha@3281: if (q < fractionSizes[i]) { sascha@3281: fractions.get(i).add(sq); sascha@3281: continue OUTER; sascha@3281: } sascha@3281: } sascha@3281: fractions.get(fractions.size()-1).add(sq); sascha@3281: } sascha@3281: } sascha@3281: sascha@3281: public int numFractions() { sascha@3281: return fractions.size(); sascha@3281: } sascha@3281: sascha@3281: public List getFraction(int idx) { sascha@3281: return fractions.get(idx); sascha@3281: } sascha@3281: sascha@3281: public void reset() { sascha@3281: for (List fraction: fractions) { sascha@3281: fraction.clear(); sascha@3281: } sascha@3281: } sascha@3281: } sascha@3281: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :