前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java进阶】Filter用法

【Java进阶】Filter用法

作者头像
全栈开发日记
发布2023-10-08 08:48:08
2610
发布2023-10-08 08:48:08
举报
文章被收录于专栏:全栈开发日记

最近在学习过程中,发现了很多以前没有用到过的语法以及随着JDK的更新出现的新特性,所以之后会进行分享自己觉得有必要记录的一些“进阶语法”。

Filter用法

代码

先看代码:

代码语言:javascript
复制
public class FilterTest {
    public static void main(String[] args) {

        List<String> list = List.of("a","b");
        List<Node> nodeList = List.of(
                new Node("abc","测试"),
                new Node("bac","测试"));
        Map<String, List<Node>> map = new HashMap<>();

        list.forEach(item ->
                map.put(
                        item, filter(nodeList, node -> 
                            node.getId().startsWith(item)
                        )
                )
        );
        System.out.println(map);
    }

    public static <T> List<T> filter(Collection<T> collection, Predicate<? super T> predicate) {
        return collection.stream().filter(predicate).collect(Collectors.toList());
    }
}

解释:使用list列表中的每个元素作为键,对nodeList进行过滤,过滤条件是节点的ID以列表中的元素为前缀。然后将过滤后的结果放入map中。

特性及语法

List.of(...)
代码语言:javascript
复制
List<String> list = List.of("a","b");

自 Java 9 开始,JDK里面为集合(List、Set、Map)都添加了ofcopyOf方法,它们两个都用来创建不可变的集合。

filter函数

其中涉及到了两个filter函数,一个是自己写的,另一个是使用java.util.stream.Stream下的filter函数。

关于自己编写的filter函数,这是一个泛型方法,接收一个集合和一个断言(即一个可以接受集合中元素并返回布尔值的函数),然后通过流API(java.util.stream.Stream)从集合中过滤出满足断言的元素,并将这些元素收集到一个新的列表中。

关于java.util.stream.Stream下的filter函数,用于筛选出满足特定条件的元素,创建一个包含这些元素的新流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-07 12:16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Filter用法
    • 代码
      • 特性及语法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档