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

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

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

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

例子:

Input: HashMap: {1=Geeks, 2=ForGeeks, 3=GeeksForGeeks}, key = 2
Output: {1=Geeks, 3=GeeksForGeeks}

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

    程序:

    // Java program to remove an entry using key
    // 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 key to be removed
            int keyToBeRemoved = 2;
      
            // 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 key is the required key
                if (keyToBeRemoved == entry.getKey()) {
      
                    // 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.getKey() 方法获取。
    4. 所需条目已成功删除。

    程序:

    // Java program to remove an entry using key
    // 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 key to be removed
            int keyToBeRemoved = 2;
      
            // Print the initial HashMap
            System.out.println("Original HashMap: "
                               + map);
      
            // Remove the specified entry from the Map
            map.entrySet()
                .removeIf(
                    entry -> (keyToBeRemoved == entry.getKey()));
      
            // Print the modified HashMap
            System.out.println("Modified HashMap: "
                               + map);
        }
    }
    
    输出:
    Original HashMap: {1=Geeks, 2=ForGeeks, 3=GeeksForGeeks}
    Modified HashMap: {1=Geeks, 3=GeeksForGeeks}