05/07/2020=(material:96113 date:05/07/2020 quantity:9), 05/06/2020=(material:96112 date:05/06/2020 quantity:13)}
3 Réponses :
de ce que vous avez fourni peut avoir une carte code> de de la carte code> S, groupé par
date code>, puis par
matériau
/ code>, et comme vous avez seulement une valeur à gauche, la Quanity (les autres valeurs sont déjà fournies par la clé dans la carte code>), vous pouvez utiliser ce format:
[(material=96113, date=05/07/2020, quantity=9), (material=96111, date=05/06/2020, quantity=10), (material=96112, date=05/06/2020, quantity=3)]
@Eklavya c'est très adapté aux usages comme ceux-ci
Bien sûr, parfois, je suis confondu avec la publication d'une réponse à l'aide de Stream API (quand op ne l'utilise pas)
Comment vérifier la sortie. J'ai utilisé s.o.p (carte); Je reçois une sortie comme {05/07/2020=COM.IIB.RESERVATION.DATA@4517D9A3, 05/06/2020=COM.IIB.RESERVATION.DATA@372F7A8D}.
@rojasimple Je suis désolé, je ne comprends pas vraiment ce que votre problème est. La sortie que vous avez montrée de votre ancien code ou de celle que j'ai fournie? La méthode tostring () code> correctement implémentée correctement?
Basé sur ce que j'ai compris, je pense que c'est ce que vous demandez:
for(Data obj : list) { if (map.containsKey(obj.getDate())) { // If that key exists if(map.get(obj.getDate()).getMaterial() == obj.getMaterial()){ // and if the material is also same map.put(obj.getDate(),new Data(map.get(obj.getDate()).getQuantity() + (obj.getQuantity()), obj.getDate(), obj.getMaterial())); // update the item } else{ map.put(obj.getDate(),obj); // if material is not same } } else { map.put(obj.getDate(),obj); // if key don't exists, add a new item } }
Utilisez .equals () code> au lieu de
= = = code>
Comment la clé de date multiples contient-elle sur la carte?
Si le matériau n'est pas identique, ajoutez simplement un nouvel élément code> -> il ne sera pas ajouté b>, mais l'ancien sera écrasé!
@Lino Oops, tu as raison !! Merci d'avoir fait remarquer cela. C'était si évident. Comment ça m'a manqué !! :)
J'ai aussi essayé ce code. Je reçois la sortie comme {05/07/2020=COM.IIB.RESERVATION.DATA@4517D9A3, 05/06/2020=COM.IIB.RESERVATION.DATA@372F7A8D}
Vous pouvez utiliser l'API de flux pour résoudre ce problème. Utilisation de Vous pouvez tester le code en ligne en ligne ici a> p> p> Collecteurs.Tomap Code> Carte par date et matériaux. Fusionner la quantité et collecter. Ensuite, obtenez les valeurs de carte définies dans la liste.
Partagez l'objet de données aussi
Par quels critères voulez-vous grouper?
date code> ou
matériau code> ou les deux? Pour ce dernier, vous auriez besoin d'une structure de carte imbriquée:
mappe> code>
Basé à la date, nous devons mapper. Pour la même date, nous pouvons également avoir un matériau différent, puis il devrait s'afficher comme séparé.
Ensuite, utilisez
mappe> code> ou
mappe> code> et vérifier pour différents matériaux pour ajouter séparément la liste ou la carte
La classe d'objet de données contient la méthode des getters and Setters