Comment obtenir une clé de valeur dans Java Hashmap
- Obtenir une clé unique à partir d’une valeur à l’aide de BidiMap en Java
-
Obtenir une clé unique à partir d’une valeur en utilisant
map.entrySet()
en Java - Obtention de plusieurs clés avec la valeur en utilisant l’API de Stream en Java
Hashmap est une partie essentielle de Java et nous donne la possibilité de travailler avec souplesse sur nos données en utilisant la méthode des paires clé-valeur. La valeur est attachée à la clé, et nous pouvons trouver la valeur en utilisant sa clé très facilement. Mais que faire si nous voulons récupérer la clé à partir d’une valeur ?
C’est ce dont nous allons discuter ici. Notre objectif est d’obtenir la clé qui est attachée à la valeur.
Obtenir une clé unique à partir d’une valeur à l’aide de BidiMap en Java
Nous pouvons utiliser une carte bidirectionnelle pour obtenir la clé en utilisant sa valeur. Une carte bidirectionnelle garantit qu’il n’y a pas de valeurs en double dans la carte et que la valeur peut être utilisée pour obtenir la clé. BidiMap est une carte bidirectionnelle qui est fournie avec les collections d’Apache Commons.
La première étape, et la plus importante, est d’inclure la dépendance dans notre projet.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
L’exemple suivant a une BidiMap
qui contient quatre éléments de paires clé-valeur. Comme une BidiMap
contient des valeurs uniques, une clé ne peut pas avoir plusieurs valeurs. C’est pourquoi nous ne pouvons obtenir qu’une seule clé pour chaque valeur.
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;
public class Main {
public static void main(String[] args) {
BidiMap<String, String> bidiMap = new TreeBidiMap<>();
bidiMap.put("key1", "value1");
bidiMap.put("key2", "value2");
bidiMap.put("key3", "value3");
bidiMap.put("key4", "value4");
System.out.println(bidiMap.getKey("value4"));
}
}
Production:
key4
Obtenir une clé unique à partir d’une valeur en utilisant map.entrySet()
en Java
La carte en Java est livrée avec une méthode entrySet()
que nous pouvons utiliser pour créer un ensemble d’éléments de la carte et ensuite la parcourir en boucle pour obtenir notre clé avec la valeur.
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Object> sampleMap = new HashMap<>();
sampleMap.put("key1", "value1");
sampleMap.put("key2", "value2");
sampleMap.put("key3", "value3");
sampleMap.put("key4", "value4");
String getKeyFromValue = getSingleKeyFromValue(sampleMap, "value2");
System.out.println(getKeyFromValue);
}
public static <K, V> K getSingleKeyFromValue(Map<K, V> map, V value) {
for (Map.Entry<K, V> entry : map.entrySet()) {
if (Objects.equals(value, entry.getValue())) {
return entry.getKey();
}
}
return null;
}
Production:
key2
Obtention de plusieurs clés avec la valeur en utilisant l’API de Stream en Java
Nous avons vu comment obtenir une seule clé à partir d’une valeur, mais une Map
peut avoir plusieurs valeurs attachées à une seule clé. Pour obtenir toutes les clés d’une valeur, nous utiliserons la Stream API
de Java 8.
L’exemple ci-dessous utilise la méthode getMultipleKeysByValue()
qui prend la Map
et la valeur pour trouver les clés. Elle retourne ensuite la liste des clés en conséquence.
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Map<String, Object> sampleMap = new HashMap<>();
sampleMap.put("key1", "value1");
sampleMap.put("key2", "value1");
sampleMap.put("key3", "value2");
sampleMap.put("key4", "value1");
List<String> getKeysFromValue = getMultipleKeysByValue(sampleMap, "value1");
System.out.println(getKeysFromValue);
}
public static <String> List<String> getMultipleKeysByValue(
Map<String, Object> map, Object value) {
return map.entrySet()
.stream()
.filter(entry -> Objects.equals(entry.getValue(), value))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
}
Production:
[key1, key2, key4]
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn