Bonjour^^
Je cherche à comparer les valeurs et les clés d'une Hashtable, elle-même contenue dans une Hashtable en tant que valeur (Hashtable<String, Hashtable>), avec d'autres Hashtables; Je ne sais pas du tout comment m'y prendre >< Need help =)
Bonjour^^
Je cherche à comparer les valeurs et les clés d'une Hashtable, elle-même contenue dans une Hashtable en tant que valeur (Hashtable<String, Hashtable>), avec d'autres Hashtables; Je ne sais pas du tout comment m'y prendre >< Need help =)
tu pourrais préciser quels sont tes critères de comparaison et pourquoi la méthode equals ne te convient pas?
En gros, je dois créer une méthode makeable (Hashtable ingrédients, Hashtable recette) qui doit retourner la liste des recettes possibles avec les ingrédients disponibles.
On a ingrédients<nom, quantité> et recette<nom, <ingédients qu'il faut> > mais je ne sais pas comment manipuler tout ça...
Le mieux serait ceci comme structure
List<Ingredient> (listes des ingrédients)
et Map<Recette,List<Ingredient>> (liste des recetes avec pour chaque une liste d'ingrédients)
ensuite tu parcoure tes recettes:
autre option
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 List<Recette> makeable(Map<Recette,List<Ingredient>> recettes, List<Ingredient> disponibles){ List<Recette> result = new ArrayList<Recette>(); for (Map.Entry<Recette,List<Ingredient>> element : recettes.entrySet()){ if (disponible.containsAll(element.getValue()) result.add(element.getKey()); } return result; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 List<Recette> makeable(List<Recette> recettes, List<Ingredient> disponibles){ List<Recette> result = new ArrayList<Recette>(); for (Recette recette: recettes){ if (disponible.containsAll(recette.getIngredients()) result.add(recette); } return result; }
Merci pour ta réponse, mais je ne vois pas comment une liste pourrait stocker l'ingrédient PLUS la quantité disponible...
Ma Hashtable inventaire est comme ceci :
sucre 5
sel 2
oeufs 3
et et recette comme ça :
gateau : sucre 2 oeuf 1
omelette : sel 1 oeufs 2
dans ce cas, tu fais deux boucles imbriquée et tu fais tout à la main.
Tu fais un objet "Nourriture", qui a 2 attributs :
* 1 String : l'ingrédient lui-même
* 1 Integer : la quantité
Après, tu fais un objet "Inventaire", qui a 2 attributs :
* 1 String : le nom du proprio du frigo[on ne fait jamais un programme que pour soi-même, il faut prévoir l'évolution]
* 1 List<Nourriture>
Et tu fais un objet "Recette", qui a 2 attributs :
* 1 String : le nom de la recette
* 1 List<Nourriture> : l'ensemble des ingrédients de la recette
Par contre, ce que je constate, c'est qu'il faudrait voir pour définir correctement ta comparaison, car faire un equals est légèrement bête : si on imagine que tu as 3 oeufs dans ton frigo, et que ta recette en demande 2, je pense qu'il faudrait répondre OK sur le fait qu'on peut faire la recette. Je verrais plutôt un "contains" plutôt qu'un "equals".
Partager