在迭代时使用 HashMap 中的值删除条目
给定一个 HashMap 和Java中的一个值,任务是使用该值从该 HashMap 中删除一个条目,同时对其进行迭代。
例子:
Input: HashMap: {1=Geeks, 2=ForGeeks, 3=GeeksForGeeks}, value = “ForGeeks”
Output: {1=Geeks, 3=GeeksForGeeks}
Input: HashMap: {1=G, 2=e, 3=e, 4=k, 5=s}, value = k
Output: {1=G, 2=e, 3=e, 5=s}
- 使用Java 7 及之前版本:
- 获取 HashMap 和值
- 使用 HashMap.iterate() 方法创建一个迭代器来迭代 HashMap。
- 使用 Iterator.hasNext() 方法迭代 HashMap。
- 迭代时,检查该迭代的值是否等于指定的值。 Map 的入口值可以通过 entry.getValue() 方法获取。
- 如果值匹配,则使用 remove() 方法从 HashMap 中删除该迭代的条目。
- 所需条目已成功删除。
句法:
Iterator> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); if (valueToBeRemoved.equals(entry.getValue())) { iterator.remove(); } }
下面是上述方法的实现:
// Java program to remove an entry using value // from a HashMap while iterating over it import java.util.*; public class GFG { public static void main(String[] args) { // Create a HashMap HashMap
map = new HashMap<>(); // Populate the HashMap map.put(1, "Geeks"); map.put(2, "ForGeeks"); map.put(3, "GeeksForGeeks"); // Get the value to be removed String valueToBeRemoved = "ForGeeks"; // Print the initial HashMap System.out.println("Original HashMap: " + map); // Get the iterator over the HashMap Iterator > iterator = map.entrySet().iterator(); // Iterate over the HashMap while (iterator.hasNext()) { // Get the entry at this iteration Map.Entry entry = iterator.next(); // Check if this value is the required value if (valueToBeRemoved.equals(entry.getValue())) { // Remove this entry from HashMap iterator.remove(); } } // Print the modified HashMap System.out.println("Modified HashMap: " + map); } } 输出:Original HashMap: {1=Geeks, 2=ForGeeks, 3=GeeksForGeeks} Modified HashMap: {1=Geeks, 3=GeeksForGeeks}
- 使用Java 8 lambda 表达式:
- 获取 HashMap 和值
- 使用 HashMap.entrySet() 方法获取该地图的入口集。
- 如果值等于指定的值,则使用 lambda 表达式从映射中删除条目。 Map 的入口值可以通过 entry.getValue() 方法获取。
- 所需条目已成功删除。
句法:
map.entrySet() .removeIf( entry -> (valueToBeRemoved .equals(entry.getValue())));
下面是上述方法的实现:
// Java program to remove an entry using value // from a HashMap while iterating over it import java.util.*; public class GFG { public static void main(String[] args) { // Create a HashMap HashMap
map = new HashMap<>(); // Populate the HashMap map.put(1, "Geeks"); map.put(2, "ForGeeks"); map.put(3, "GeeksForGeeks"); // Get the value to be removed String valueToBeRemoved = "ForGeeks"; // Print the initial HashMap System.out.println("Original HashMap: " + map); // Remove the specified entry from the Map map.entrySet() .removeIf( entry -> (valueToBeRemoved.equals(entry.getValue()))); // Print the modified HashMap System.out.println("Modified HashMap: " + map); } } 输出:Original HashMap: {1=Geeks, 2=ForGeeks, 3=GeeksForGeeks} Modified HashMap: {1=Geeks, 3=GeeksForGeeks}