Files
secondo/Algebras/Rose/RoseJava/twodsack/set/PointMultiSet.java
2026-01-23 17:03:45 +08:00

76 lines
2.4 KiB
Java

/*
* PointMultiSet.java 2005-05-03
*
* Dirk Ansorge, FernUniversitaet Hagen
*
*/
package twodsack.set;
import twodsack.setelement.datatype.basicdatatype.*;
import twodsack.util.collectiontype.*;
import twodsack.util.comparator.*;
import twodsack.util.number.*;
import java.util.*;
/**
* Stored in a PointMultiSet are elements of type {@link Point}. Don't try to store any other objects in an instance of this
* class. This will result in an Exception thrown by the {@link PointComparator}. The PointMultiSet class extends {@link ElemMultiSet}.
* Only few additional methods are implemented.<p>
* Two of the more interesting methods are the {@link #convert(ElemMultiSet)}, which does the conversion <tt>ElemMultiSet -> PointMultiSet</tt> and the
* {@link #zoom(Rational)} method, which allows to zoom all of the {@link Point} objects stored inside of a PointMultiSet instance.
*/
public class PointMultiSet extends ElemMultiSet {
/**
* constructors
*/
/**
* Constructs a new PointMultiSet instance using the given comparator.
*
* @param pc the comparator which is responsible for the correct order
*/
public PointMultiSet(PointComparator pc) {
super(pc);
}
/**
* Prints all of the objects elements to the standard output.
*/
public void print () {
if (this.isEmpty()) System.out.println("PointMultiSet is empty.\n");
else { super.print(); }
}//end method print
/**
* Converts an ElemMultiSet to a PointMultiSet.
* Make sure, that the ElemMultiSet <i>really</i> is of type PointMultiSet.
*
* @param ems the 'in' set
* @return the converted set
*/
static public PointMultiSet convert(ElemMultiSet ems) {
PointMultiSet retSet = new PointMultiSet(new PointComparator());
retSet.setTreeSet(ems.treeSet());
return retSet;
}//end method convert
/**
* Changes the coordinates of all points of <i>this</i> by multiplying them with fact.
* This is implemented by calling the <tt>Point.zoom()</tt> method.
*
* @param fact the number used to multiply with
* @return the 'zoom'ed set
*/
public void zoom (Rational fact) {
Iterator it = this.iterator();
while (it.hasNext()) {
MultiSetEntry actEntry = (MultiSetEntry)it.next();
((Point)actEntry.value).zoom(fact);
}//while
}//end method zoom
}//end class PointMultiSet