comment puis-je filtrer les entrées de mappage basé sur l'ensemble des entrées
Je suis en utilisant google goyave 12 et disposer d'une carte:
Map<OccupancyType, BigDecimal> roomPrice;
J'ai un:
Set<OccupancyType> policy;
Comment puis-je filtrer les entrées dans le roomPrice map
basé sur policy
et retour le filtrée carte ?
filteredMap
besoins de toutes les valeurs de policy
. Dans le cas où, roomPrice carte ne dispose pas d'une entrée de politique, je voudrais d'entrée valeur par défaut à la place.
OriginalL'auteur brainydexter | 2012-06-27
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez un Ensemble de clés, vous devez utiliser Cartes.les touches filtres(), aussi Goyave fournit un assez bon ensemble de prédicats que vous pouvez utiliser de la boîte. Dans votre cas, quelque chose comme Les prédicats.dans() devrait fonctionner.
Donc, fondamentalement, vous vous retrouvez avec:
Espère que cela aide.
Si vous avez une carte avec "par défaut" entrées que vous pouvez faire quelque chose comme: filteredMap.putAll(les Cartes.différence(filteredMap, defaultMap).entriesOnlyOnRight());
Aussi, vous pouvez prendre un coup d'oeil à cet article: scaramoche.blogspot.de/2010/08/... Il a quelques beaux exemples de Prédicat d'utilisation.
OriginalL'auteur Francisco Paulo
equals
ethashcode
dansOccupancyType
.roomPrice
's jeu de clés et de recueillir lesles éléments contenus dans le filtre.
Quelque chose comme ceci:
Mise à jour
Ok après avoir lu un peu sur Google Goyave, vous devriez être en mesure de faire quelque chose comme:
et puis
devrait faire l'affaire.
Ok j'ai mis à jour ma réponse après la lecture un peu laissez-moi savoir si cela fonctionne!
Ne pensez-vous pas qu'il devrait être
Maps.filterEntries(roomPrice, priceFilter);
oups ur droit. Pardonnez-moi son 2 le matin 🙂
OriginalL'auteur Jeshurun