Advertisement
makispaiktis

StackPriority.java

Feb 2nd, 2019 (edited)
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.37 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.*;
  4.  
  5. public class PriorityStack {
  6.  
  7.     ArrayList <Job> stack = new ArrayList <Job>();
  8.    
  9.     // Methods
  10.     public int size() {
  11.         return stack.size();
  12.     }
  13.    
  14.     public boolean empty() {
  15.        
  16.         if(stack.size() == 0) {
  17.             return true;
  18.         }
  19.         else {
  20.             return false;
  21.         }
  22.    
  23.     }
  24.    
  25.     public double getMedianPriority() {
  26.         //double[] priorities = new double[stack.size()];
  27.         ArrayList <Double> priorities = new ArrayList <Double>();
  28.        
  29.         if(stack.size() %2 != 0) {
  30.             for(int i=0; i<stack.size(); i++) {
  31.                 priorities.add(i, stack.get(i).priority);
  32.                 Collections.sort(priorities);
  33.                 int index = (stack.size() + 1) / 2;
  34.                 return priorities.get(index);
  35.             }
  36.            
  37.         }
  38.        
  39.         else {
  40.             for(int i=0; i<stack.size(); i++) {
  41.                 priorities.add(i, stack.get(i).priority);
  42.                 Collections.sort(priorities);
  43.                 int index1 = stack.size() / 2;
  44.                 int index2 = index1 + 1;
  45.                 double averagePriority = 0.5 * (priorities.get(index1) + priorities.get(index2));
  46.                 return averagePriority;
  47.             }
  48.         }
  49.        
  50.     }
  51.    
  52.     public boolean increasePriority(int p) {
  53.        
  54.         if(p > 0){
  55.             if(size() != 0) {
  56.                 for(int i=0; i<stack.size(); i++) {
  57.                     stack.get(i).setPriority(stack.get(i).priority + p);
  58.                 }
  59.             }
  60.             return true;
  61.         }
  62.         else {
  63.             return false;
  64.         }
  65.     }
  66.    
  67.     public void push(Job j) {
  68.         stack.add(j);
  69.     }
  70.    
  71.     public Job pop() {
  72.         ArrayList <Double> priorities = new ArrayList <Double>();
  73.         for(int i=0; i<stack.size(); i++) {
  74.             priorities.add(i, stack.get(i).priority);
  75.         }
  76.         Collections.sort(priorities);
  77.        
  78.         // I find the maxPriority
  79.         int index = priorities.size() - 1;
  80.         double maxPriority = priorities.get(index);
  81.        
  82.         // 3 cases
  83.         if(priorities.size() == 0) {
  84.             System.out.println("Error! ArrayList stack is empty!");
  85.             return new Job(-1000, "Error");
  86.         }
  87.        
  88.         else if(priorities.size() == 1) {
  89.             Job temp = stack.get(0);
  90.             stack.remove(stack.get(0));
  91.             return temp;
  92.         }
  93.        
  94.         // Now, I check if there is another priority = maxPriority
  95.         else {
  96.             ArrayList <Job> sameMaxPriority = new ArrayList <Job>();
  97.             for(int i=0; i<stack.size(); i++) {
  98.                 if(stack.get(i).priority == maxPriority) {
  99.                     sameMaxPriority.add(stack.get(i));
  100.                 }
  101.             }
  102.            
  103.             Job temp = sameMaxPriority.get(sameMaxPriority.size() - 1);
  104.             stack.remove(temp);
  105.             return temp;
  106.         }
  107.        
  108.        
  109.        
  110.     }
  111.    
  112.    
  113.    
  114.    
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement