Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. package be.kdg.cryptomuntproject.generics;
  2.  
  3. import java.util.Comparator;
  4. import java.util.LinkedList;
  5. import java.util.TreeMap;
  6.  
  7.  
  8. /**
  9. * Deze klasse maakt gebruik van een treemap met als key een Integer en als value een lijst van generic elementen.
  10. * @param <T> generic
  11. * @author Jonathan Peers
  12. * @version generics_module_2
  13. */
  14. public class PriorityQueue<T> implements FIFOQueue<T> {
  15.  
  16. private TreeMap<Integer, LinkedList<T>> queue;
  17.  
  18. /**
  19. * We gaan in de constructor de treemap initialiseren. We geven een Comparator methode mee (reverseOrder()) in de constructor van de treemap.
  20. */
  21. public PriorityQueue() {
  22. queue = new TreeMap<>(Comparator.reverseOrder());
  23. }
  24.  
  25. /**
  26. * Deze methode laat ons elementen toevoegen aan één van de lijsten in de treemap (queue)
  27. * @param element een element van het type generic.
  28. * @param priority een getal van 1 tot 5. Geeft gewicht aan het element en bepaalt aan welke lijst het wordt toegevoegd in de treemap.
  29. * @return geeft terug of het element correct is toegevoegd aan de queue.
  30. */
  31. public boolean enqueue(T element, int priority) {
  32. //check element
  33. for (LinkedList<T> ts : queue.values()) {
  34. if (ts.contains(element)) return false;
  35. }
  36.  
  37. if (!queue.containsKey(priority)) {
  38. queue.put(priority, new LinkedList<T>());
  39. }
  40.  
  41. return queue.get(priority).add(element);
  42. }
  43.  
  44. /**
  45. * Deze methode geeft het element terug dat zich vooraan bevindt in de hoogste prioriteitsreeks
  46. * @return geeft een element terug van het type Generic.
  47. */
  48. @Override
  49. public T dequeue() {
  50. // Retourneer het element dat zich vooraan bevindt in de hoogste prioriteitsreeks
  51. for (Integer i : queue.keySet()) {
  52. if (!queue.get(i).isEmpty()) {
  53. return queue.get(i).pop();
  54. }
  55. }
  56.  
  57. /* KAN OOK OP DEZE MANIER
  58. for (LinkedList<T> ts : queue.values()) {
  59. if (ts.size() > 0) {
  60. return ts.remove(0);
  61. }
  62. }*/
  63.  
  64. return null;
  65. }
  66.  
  67. /**
  68. * Deze methode zoekt naar een bepaald element in de queue.
  69. * @param element generic
  70. * @return integer
  71. */
  72. @Override
  73. public int search(T element) {
  74. int i = 0;
  75. for (LinkedList<T> ts : queue.values()) { //queue zit vol met lijsten van cryptomunten
  76. for (T t : ts) { // lijst van munten
  77. if (t.equals(element)) { //munt == element?
  78. return i;
  79. }
  80. i++;
  81. }
  82. }
  83. return -1;
  84. }
  85.  
  86. /**
  87. * Deze methode geeft het aantal elementen in de queue terug.
  88. * @return grootte van de queue in de vorm van een integer.
  89. */
  90. @Override
  91. public int getSize() {
  92. int totaal = 0;
  93. for (LinkedList<T> ts : queue.values()) {
  94. totaal += ts.size();
  95. }
  96. return totaal;
  97.  
  98. }
  99.  
  100. /**
  101. * Deze methode geeft de be.kdg.cryptomuntproject.data van deze klasse terug in een geformateerde string.
  102. * @return een geformateerde string.
  103. */
  104. @Override
  105. public String toString() {
  106. StringBuilder sb = new StringBuilder();
  107. for (Integer integer : queue.keySet()) {
  108. for (T t : queue.get(integer)) {
  109. sb.append(String.format("%d: %s\n", integer, t));
  110. }
  111. }
  112. return sb.toString();
  113. }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement