package cc.mallet.cluster.iterator; import cc.mallet.cluster.Clustering; import cc.mallet.cluster.neighbor_evaluator.AgglomerativeNeighbor; import cc.mallet.cluster.util.ClusterUtils; import cc.mallet.types.Instance; import cc.mallet.types.InstanceList; /** * Iterate over all pairs of Instances. * * @author "Aron Culotta" <culotta@degas.cs.umass.edu> * @version 1.0 * @since 1.0 * @see NeighborIterator */ public class AllPairsIterator extends NeighborIterator { int i; int j; InstanceList instances; /** * * @param clustering True Clustering. * @return */ public AllPairsIterator (Clustering clustering) { super(clustering); i = 0; j = 1; this.instances = clustering.getInstances(); } public boolean hasNext () { return i < instances.size() - 1; } public Instance next () { AgglomerativeNeighbor neighbor = new AgglomerativeNeighbor(clustering, ClusterUtils.copyAndMergeInstances(clustering, i, j), i, j); // Increment. if (j + 1 == instances.size()) { i++; j = i + 1; } else { j++; } return new Instance(neighbor, null, null, null); } }