radoslav1992

Untitled

Mar 25th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.82 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class MultisetUtils<E extends Number> extends Multiset<E>{
  4.     public MultisetUtils() {
  5.         super();
  6.     }
  7.  
  8.     public E getSmallestElement() {
  9.         PriorityQueue<E> smallestElementQueue = new PriorityQueue<>(super.values.keySet());
  10.         return smallestElementQueue.peek();
  11.     }
  12.  
  13.     public E getLargestElement() {
  14.         PriorityQueue<E> largestElementQueue = new PriorityQueue<>(super.values.size(), Collections.reverseOrder());
  15.         super.values.forEach((key, value) -> largestElementQueue.offer(key));
  16.         return largestElementQueue.peek();
  17.     }
  18.  
  19.     public E getSmallestWeightedElement() {
  20.         double smallestWeightValue = 0;
  21.         E smallestWeightElement = null;
  22.         boolean check = true;
  23.         for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
  24.             if (check) {
  25.                 smallestWeightElement = entry.getKey();
  26.                 smallestWeightValue = entry.getKey().doubleValue() * entry.getValue();
  27.                 check = false;
  28.             } else if ((entry.getKey().doubleValue() * entry.getValue()) < smallestWeightValue) {
  29.                 smallestWeightValue = entry.getKey().doubleValue() * entry.getValue();
  30.                 smallestWeightElement = entry.getKey();
  31.             }
  32.         }
  33.         return smallestWeightElement;
  34.     }
  35.  
  36.     public E getLargestWeightedElement() {
  37.         double largestWeightValue = 0;
  38.         E largestWeightElement = null;
  39.         boolean check = true;
  40.         for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
  41.             if (check) {
  42.                 largestWeightElement = entry.getKey();
  43.                 largestWeightValue = entry.getKey().doubleValue() * entry.getValue();
  44.                 check = false;
  45.             } else if ((entry.getKey().doubleValue() * entry.getValue()) > largestWeightValue) {
  46.                 largestWeightValue = entry.getKey().doubleValue() * entry.getValue();
  47.                 largestWeightElement = entry.getKey();
  48.             }
  49.         }
  50.         return largestWeightElement;
  51.     }
  52.  
  53.     public double sumElements() {
  54.         double sumResult = 0;
  55.         for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
  56.             sumResult += entry.getKey().doubleValue();
  57.         }
  58.         return sumResult;
  59.     }
  60.  
  61.     public double weightedSum() {
  62.         double weightedSumResult = 0;
  63.         for (Map.Entry<E, Integer> entry : super.values.entrySet()) {
  64.             weightedSumResult += entry.getKey().doubleValue() * entry.getValue();
  65.         }
  66.         return weightedSumResult;
  67.     }
  68.  
  69.     public Multiset<E> concatSets(Multiset<E> set) {
  70.         this.addAll(set);
  71.         return this;
  72.     }
  73.  
  74.     public List<E> sort() {
  75.         Set<E> myTreeSet = new TreeSet<>(super.values.keySet());
  76.         return new ArrayList<>(myTreeSet);
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment