Untitled
unknown
java
a month ago
1.7 kB
3
Indexable
Never
class menuRecommendations implements IMenuRecommendations{ HashMap<Integer,float> ratings = new HashMap<>(); HashMap<Integer,String> item = new HashMap<>(); HashMap<Integer,Integer> numberOfRatings = new HashMap<>(); Integer dealOfTheDay = null; Set<Integer> outOfStock = new HashSet<>(); public void addItem(int id,String displayName){ item.add(id,displayName); } public void getRecommendedItem(){ if(dealOfTheDay == null){ if(ratings.size()==0){ System.out.println("N/A"); } else{ float maxRating = -1f, maxId = 0; for(int id:ratings.keySet()){ if(maxRating<rating.get(id) && outOfStock.contains(id)==false){ maxRating = ratings.get(id); maxId = id; } } System.out.print(maxId+" "+item.get(maxId)+" Rating: "+ratings.get(maxId)); } } else if(outOfStock.contains((int)dealOfTheDay)==false){ System.out.println("N/A"); } else{ System.out.print(dealOfTheDay+" "+item.get(dealOfTheDay)+" Rating: "+ratings.get(dealOfTheDay)); } } public void outOfStock(int itemId){ ratings.remove(itemId); if(itempId==dealOfTheDay) itempId=null; } public void makeDealOfTheDay(int itempId){ dealOfTheDay = itemId; } public void rateItem(int itemId,int rating){ numberOfRatings.add(itempId,numberOfRatings.getOrDefault(itempId,0)+1); ratings.add(itempId,(ratings.getOrDefault(itempId,0)*(numberOfRatings.get(itempId)-1)+rating)/(numberOfRatings)); } public void restockItem(int itemId){ if(outOfStock.contains(itemId)) outOfStock.remove(itempId); } }