Java8 中map中删除元素的简单方法

简介: Java8 中map中删除元素的简单方法

传统的,在JAVA中得MAP中删除元素,可以这样,假设有个MAP:


Map map = new HashMap<>();


map.put(1,“value 1”);


map.put(2,“value 2”);


map.put(3,“value 3”);


for(Iterator iterator = map.keySet().iterator(); iterator.hasNext(); ) {


Integer key = iterator.next();


if(key != 1) {


iterator.remove();


}


}


而在JAVA8中,可以这样了,更为简单:


// 根据map中得值去判断删除


map.values().removeIf(value -> !value.contains(“1”));


// 根据key删除


map.keySet().removeIf(key -> key != 1);


//通过getkey()方法获得值去删除


map.entrySet().removeIf(entry -> entry.getKey() != 1);


MAP本身没办法用removeif,要通过keySet,EntrySet去调用removeif方法,再看源码:


/**


* 移除集合中满足给定条件的所有元素,错误或者运行时异常发生在迭代时或者把条件传递给调用者的时候。


*


* @implSpec


* 默认的实现贯穿了使用迭代器iterator的集合的所有元素。每一个匹配的元素都将被用Iterator接口中的


* remove()方法移除。如果集合的迭代器不支持移除,则在第一次匹配时就会抛出异常 UnsupportedOperationException


*


* @param filter 令元素移除成功的条件


* @return {@code true} 如果所有的元素都被移除


* @throws NullPointerException 如果有一个过滤器是空的


* @throws UnsupportedOperationException 如果元素不能被从该集合中移除。如果一个匹配元素不能被移除,


* 通常来说,它就不支持移除操作,这时可能抛出这个异常。


* @since 1.8


*/


default boolean removeIf(Predicate super E> filter) {


Objects.requireNonNull(filter);


boolean removed = false;


final Iterator each = iterator();


while (each.hasNext()) {


if (filter.test(each.next())) {


each.remove();


removed = true;


}


}


return removed;


}


也可以这样用:


public static void main(String[] args) {


List list = new ArrayList<>();


list.add(“a”);


list.add(“b”);


list.add(“c”);


list.add(“d”);


// 这里单独定义了过滤


Predicate predicate = (s) -> s.equals(“a”);


// 过滤掉a的元素


list.removeIf(predicate);


System.out.println(list.toString());


}


相关文章
|
1天前
|
Java
Java String 避免空指针的方法
Java String 避免空指针的方法
4 0
|
1天前
|
Java
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
14 4
|
1天前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
9 0
|
1天前
|
存储 Java
【JAVA基础篇教学】第十篇:Java中Map详解说明
【JAVA基础篇教学】第十篇:Java中Map详解说明
|
1天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
1天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
15 1
|
1天前
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法
|
1天前
|
Java C语言
详解java方法与递归
详解java方法与递归
11 3
|
1天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
11 0
|
1天前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
14 0