Comment puis-je trouver une clé dans une carte basée sur un modèle correspondant en Java
Je veux trouver les clés dans une carte avec un motif correspondant.
Ex:-
Map<String, String> map = new HashMap<String, String>();
map.put("address1", "test test test");
map.put("address2", "aaaaaaaaaaa");
map.put("fullname", "bla bla");
De carte ci-dessus, je veux récupérer les valeurs de clés qui a le préfixe "adresse". De sorte que dans cet exemple, la sortie doit être les deux premiers résultats ("adresse1" et "adresse2").
Comment puis-je obtenir dynamiquement?
Grâce.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous pouvez saisir le
keySet
de la carte, puis filtrer pour obtenir des clés qui commence par "adresse" et d'ajouter les clés valides pour une nouvelle série.Avec Java 8, c'est un peu moins verbeux:
Si vous avez Java 8 fonctions, quelque chose comme cela devrait fonctionner:
Quelque chose comme ceci:
Vous aurez à boucle au moyen de la Touche Set et match le modèle
J'ai créé une interface...
Et la mise en œuvre
Le test
Le résultat
Ou peut-être que c'est exagéré. Je peux voir une utilisation répétée pour cela, mais.
Pour ceux qui veulent la pré-java8 version:
Si vous n'avez pas besoin de beaucoup de performance, la navigation sur toutes les touches de votre carte (
map.entrySet
) pour obtenir ceux correspondant à votre modèle devrait être suffisant.Si vous avez besoin d'une bonne performance, une solution que j'ai utilisée pour résoudre ce type de problème est l'utilisation d'une base de données en mémoire telles que H2: vous mettez vos données dans une table mémoire, create unique index sur la clé et vous permettra d'obtenir de bonnes performances pour les 2 cas:
select value from in_mem_table where key = ?'
), classique de l'utilisation d'une table de hachageselect value from in_mem_table where key like 'adress%'
)Une façon est de créer une fonction qui permet de rechercher toutes les carte de clés avec une adresse, mais qui permettrait d'éliminer l'avantage de la carte, puisque l'objectif est sans doute d'être rapide.
Une autre façon est de créer une liste ou un tableau contenant toutes les clés en commençant par l'adresse, mais qui vaut seulement si vous voulez juste les clés avec adresse.
Maintenant, avez-vous besoin pour être en mesure de chercher pour rien ou juste d'une chose en particulier? Et avez-vous besoin de la carte ou peut-il être autre chose, comme un tableau ou une liste?