Untitled
unknown
java
2 years ago
1.7 kB
11
Indexable
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);
}
}Editor is loading...