📜  在迭代时使用 HashMap 中的值删除条目

📅  最后修改于: 2022-05-13 01:54:27.267000             🧑  作者: Mango

在迭代时使用 HashMap 中的值删除条目

给定一个 HashMap 和Java中的一个值,任务是使用该值从该 HashMap 中删除一个条目,同时对其进行迭代。

例子:

  • 使用Java 7 及之前版本:
    1. 获取 HashMap 和值
    2. 使用 HashMap.iterate() 方法创建一个迭代器来迭代 HashMap。
    3. 使用 Iterator.hasNext() 方法迭代 HashMap。
    4. 迭代时,检查该迭代的值是否等于指定的值。 Map 的入口值可以通过 entry.getValue() 方法获取。
    5. 如果值匹配,则使用 remove() 方法从 HashMap 中删除该迭代的条目。
    6. 所需条目已成功删除。

    句法:

    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 表达式:
    1. 获取 HashMap 和值
    2. 使用 HashMap.entrySet() 方法获取该地图的入口集。
    3. 如果值等于指定的值,则使用 lambda 表达式从映射中删除条目。 Map 的入口值可以通过 entry.getValue() 方法获取。
    4. 所需条目已成功删除。

    句法:

    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}