How to Remove Items/Entries with Specific Values from Map/HashMa

  • 时间:2020-09-07 12:13:31
  • 分类:网络文摘
  • 阅读:144 次
2091E060-120E-4C44-BAA3-7E4E0DF7BD55 How to Remove Items/Entries with Specific Values from Map/HashMap Object in Java? java programming languages

Java

In Java, you can usually remove items or entries with some specific value from Map or HashMap object using traditional method:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public Map<String, String> removeItemByValue(Map<String, String> data, String value) {
  for (var key: data.keySet()) {
    if (data.get(key) == null) {
       data.remove(key);
    }
  }
  return data;
}
 
var data = new HashMap<String, String>();
data.put("a", "1");
data.put("b", "2");
data.put("c", "2");
removeItemByValue(data, null); 
// only prints a = 1
for (var key: data.keySet()) {
  System.out.println(key + "=" + data.get(key)); 
}
public Map<String, String> removeItemByValue(Map<String, String> data, String value) {
  for (var key: data.keySet()) {
    if (data.get(key) == null) {
       data.remove(key);
    }
  }
  return data;
}

var data = new HashMap<String, String>();
data.put("a", "1");
data.put("b", "2");
data.put("c", "2");
removeItemByValue(data, null); 
// only prints a = 1
for (var key: data.keySet()) {
  System.out.println(key + "=" + data.get(key)); 
}

A Better Map-Item Removal Approach via using values()

The values() method in Map object actually returns a Collection view of the valujes that are contained in the map object. And the remove object return null when the item is not existent anymore. Thefore, we can use the following modern 1-liner in Java to remove the items in a Map that have the specific value.

1
2
3
4
public Map<String, String> removeItemByValue(Map<String, String> data, String value) {
  while (data.values().remove(value)) ;
  return data;
}
public Map<String, String> removeItemByValue(Map<String, String> data, String value) {
  while (data.values().remove(value)) ;
  return data;
}

To double check and verify that items are actually removed:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.helloacm;
 
import java.util.HashMap;
import java.util.Map;
 
public class Main {
    public static void main(String[] args) {
        var data = new HashMap<String, String>();
        data.put("a", "b");
        data.put("e", "2");
        data.put("f", "2");
        while (data.values().remove("2"));
        // prints "a"        
        for (Map.Entry<String, String> entry: data.entrySet()) {
            System.out.println(entry.getKey());
        }
    }
}
package com.helloacm;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        var data = new HashMap<String, String>();
        data.put("a", "b");
        data.put("e", "2");
        data.put("f", "2");
        while (data.values().remove("2"));
        // prints "a"        
        for (Map.Entry<String, String> entry: data.entrySet()) {
            System.out.println(entry.getKey());
        }
    }
}

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
扩建后草坪的底边应是多少米  abc是一个任意三位数  两条直角边的长度是两个质数  小羊小鹿和小熊共同修建一个小水池  wordpress 文章发布出现“定时发布失败”的原因及解决方法  wordpress 数据库表前缀修改方法  wordpress技巧:为标签链接添加rel=”nofollow”属性  wordpress 4.0 新增自定义图标插件安装  WordPress在线文件管理插件:FileBrowser  设置wordpress文章标题高亮的代码 
评论列表
添加评论