2
HashMap<String, TreeSet<String>> cuiToFood = new HashMap();3
HashMap<String, Integer> foodToRat = new HashMap();4
HashMap<String, String> foodToCui = new HashMap();6
public FoodRatings(String[] foods, String[] cuisines, int[] ratings) {7
for (int i = 0; i < foods.length; i++) {8
TreeSet<String> foodOfThisCuisine =9
cuiToFood.getOrDefault(13
foodToRat.get(a).equals(foodToRat.get(b))15
: foodToRat.get(b) - foodToRat.get(a)));17
// Both comparators are equal18
/* new Comparator<String>(){20
public int compare(String a, String b){21
int aRat = foodToRat.get(a);22
int bRat = foodToRat.get(b);24
if(aRat != bRat) return bRat - aRat; // largest rating first25
for(int i = 0; i < Math.min(a.length(), b.length()); i++){26
if(a.charAt(i) != b.charAt(i)) return a.charAt(i) - b.charAt(i);28
return a.length() - b.length();33
foodToRat.put(foods[i], ratings[i]);34
foodOfThisCuisine.add(foods[i]);35
foodToCui.put(foods[i], cuisines[i]);37
cuiToFood.put(cuisines[i], foodOfThisCuisine);41
// CompareTo() is used to compare whether 2 strings are equal in hashSet! So remove, change value42
// of key in HashMap, then insert again43
public void changeRating(String food, int newRating) {44
String cui = foodToCui.get(food);45
TreeSet<String> foodOfThisCui = cuiToFood.get(cui);46
foodOfThisCui.remove(food);47
foodToRat.put(food, newRating);49
foodOfThisCui.add(food);50
cuiToFood.put(cui, foodOfThisCui);53
public String highestRated(String cuisine) {54
return cuiToFood.get(cuisine).first();