|
|
- /*
- * SD2x Homework #5
- * Implement the methods below according to the specification in the assignment description.
- * Please be sure not to change the method signatures!
- */
-
- import java.util.List;
- import java.util.PriorityQueue;
- import java.util.TreeMap;
- import java.util.Map.Entry;
- import java.util.Set;
- import java.util.Stack;
- import java.util.LinkedList;
-
- public class MovieRatingsProcessor {
-
- public static List<String> getAlphabeticalMovies(TreeMap<String, PriorityQueue<Integer>> movieRatings) {
- if(movieRatings == null) return new LinkedList<String>();
- return new LinkedList<String>(movieRatings.keySet()); // Normally sets aren't ordered but the docs say the returned set is ordered and it works sooo. \_(._.)_/
- }
-
- public static List<String> getAlphabeticalMoviesAboveRating(TreeMap<String, PriorityQueue<Integer>> movieRatings, int rating) {
- List<String> movies = new LinkedList<String>();
- if(movieRatings == null) return movies;
- Set<Entry<String, PriorityQueue<Integer>>> entries = movieRatings.entrySet();
-
- for(Entry<String, PriorityQueue<Integer>> e : entries){
- if(e.getValue().peek() > rating) movies.add(e.getKey());
- }
- return movies;
- }
-
- public static TreeMap<String, Integer> removeAllRatingsBelow(TreeMap<String, PriorityQueue<Integer>> movieRatings, int rating) {
-
- TreeMap<String, Integer> removed = new TreeMap<String, Integer>();
- if(movieRatings == null) return removed;
- int count;
- PriorityQueue<Integer> value;
- LinkedList<String> deleted = new LinkedList<String>();
- Integer[] foo = new Integer[1];
- for(String n : movieRatings.keySet()){
- value = movieRatings.get(n);
- if(value.peek() >= rating){
- continue;
- }
- Integer[] ratings = value.toArray(foo);
- count = 0;
- for(int i = 0; i < ratings.length; i++){
- if(ratings[i] < rating){
- value.remove(ratings[i]);
- count++;
- }
- }
- removed.put(n, count);
- if(count == ratings.length){
- deleted.add(n);
- }
- }
- for(String n : deleted)
- movieRatings.remove(n);
- return removed;
-
- }
- }
|