Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class MultisetUtils<E extends Number> extends Multiset<E>{
- public MultisetUtils() {
- super();
- }
- public E getSmallestElement() {
- PriorityQueue<E> smallestElementQueue = new PriorityQueue<>(super.values.keySet());
- return smallestElementQueue.peek();
- }
- public E getLargestElement() {
- PriorityQueue<E> largestElementQueue = new PriorityQueue<>(super.values.size(), Collections.reverseOrder());
- super.values.forEach((key, value) -> largestElementQueue.offer(key));
- return largestElementQueue.peek();
- }
- public E getSmallestWeightedElement() {
- double smallestWeightValue = 0;
- E smallestWeightElement = null;
- boolean check = true;
- for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
- if (check) {
- smallestWeightElement = entry.getKey();
- smallestWeightValue = entry.getKey().doubleValue() * entry.getValue();
- check = false;
- } else if ((entry.getKey().doubleValue() * entry.getValue()) < smallestWeightValue) {
- smallestWeightValue = entry.getKey().doubleValue() * entry.getValue();
- smallestWeightElement = entry.getKey();
- }
- }
- return smallestWeightElement;
- }
- public E getLargestWeightedElement() {
- double largestWeightValue = 0;
- E largestWeightElement = null;
- boolean check = true;
- for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
- if (check) {
- largestWeightElement = entry.getKey();
- largestWeightValue = entry.getKey().doubleValue() * entry.getValue();
- check = false;
- } else if ((entry.getKey().doubleValue() * entry.getValue()) > largestWeightValue) {
- largestWeightValue = entry.getKey().doubleValue() * entry.getValue();
- largestWeightElement = entry.getKey();
- }
- }
- return largestWeightElement;
- }
- public double sumElements() {
- double sumResult = 0;
- for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
- sumResult += entry.getKey().doubleValue();
- }
- return sumResult;
- }
- public double weightedSum() {
- double weightedSumResult = 0;
- for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
- weightedSumResult += entry.getKey().doubleValue() * entry.getValue();
- }
- return weightedSumResult;
- }
- public Multiset<E> concatSets(Multiset<E> set) {
- this.addAll(set);
- return this;
- }
- public List<E> sort() {
- Set<E> myTreeSet = new TreeSet<>(super.values.keySet());
- return new ArrayList<>(myTreeSet);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment