Java 使用值从HashMap中删除一个条目,同时对其进行遍历
在Java中给定一个HashMap和一个值,任务是使用该值从这个HashMap中删除一个条目,同时对其进行迭代。
例子
输入 :HashMap。{1=Geeks, 2=ForGeeks, 3=GeeksForGeeks}, value = “ForGeeks”
输出 : {1=Geeks, 3=GeeksForGeeks}.
输入 :HashMap。{1=G, 2=e, 3=e, 4=k, 5=s}, value = k
输出 : {1=G, 2=e, 3=e, 5=s}
建议:请先在{IDE}上尝试你的方法,然后再继续解决。
- 使用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<Integer, String>
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<Map.Entry<Integer, String> >
iterator = map.entrySet().iterator();
// Iterate over the HashMap
while (iterator.hasNext()) {
// Get the entry at this iteration
Map.Entry<Integer, String>
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和Value
- 使用HashMap.entrySet()方法获得该地图的条目集。
- 使用lambda表达式,如果值等于指定的值,则从地图中删除该条目。地图的条目值可以在 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<Integer, String>
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}