Java 8新特性之Stream流式编程

Java新特性之Stream流式编程

 

一、基础用法(stream,map,sorted,limit,collect)

复制代码
list.stream().map(Person::getName).sorted().limit(10).collect(Collectors.toList());
解读:
1)stream() 将list转换成为流 2)map() 将流中的每一个元素 T 映射为 R(类似类型转换);
将原来的list(Person)转换成为List(String),其中的String元素为Person的name成员变量
3)sorted() 排序 4)limit() 只保留前十的元素 5)collect() 将流转换回集合类型
复制代码

 二、filter用法

list.stream().filter(person -> person.getAge() == 20).collect(Collectors.toList());

解读:
1)filter() 保存filter内boolean为true的内容

 三、skip用法

list = list.stream().skip(2).collect(Collectors.toList());
解读:
1)skip() 去除前 n 个元素

四、distinct用法

distinct()
解读:
1)去除重复元素,这个方法是通过类的 equals 方法来判断两个元素是否相等的

五、anyMatch(T -> boolean) 用法

boolean b = list.stream().anyMatch(person -> person.getAge() == 20);

解读:
1)流中是否有一个元素匹配给定的 T -> boolean 条件

六、allMatch(T -> boolean) 用法

boolean result = list.stream().allMatch(Person::isStudent);

解读:
1)流中是否所有元素都匹配给定的 T -> boolean 条件

七、noneMatch(T -> boolean)用法

boolean result = list.stream().noneMatch(Person::isStudent);

解读:
1)流中是否没有元素匹配给定的 T -> boolean 条件

八、findAny()和 findFirst()

findAny()和 findFirst()

解读:
1)findAny() 找到其中一个元素 (使用 stream() 时找到的是第一个元素;使用 parallelStream()并行时找到的是其中一个元素)
2)findFirst() 找到第一个元素

九、joining 连接字符串用法

解读:
String s = list.stream().map(Person::getName).collect(joining(","));

 

#实战记录#

 

1)stream根据汉字首字母分组排序

Map<Character, List<WeiBo>> collect = bos.stream().collect(Collectors.groupingBy(p1 -> {
            return Character.toUpperCase(PinyinUtil.getFirstLetter(p1.getWord().charAt(0)));
        },
        TreeMap::new, Collectors.toList()));

2)stream根据汉字首字母排序

List<WeiBo> weiBoList = bos.stream().sorted((p1, p2) -> instance.compare(p1.getWord(), p2.getWord())).collect(Collectors.toList());

3)stream过滤得到所有标题为"建议"和分类"国内新闻"列表

List<WeiBo> bos = weiBos.stream().filter(v -> v.getWord().contains("建议"))
.filter(v -> v.getCategory().contains("国内新闻")).collect(Collectors.toList());

 

posted @   市井丛林  阅读(489)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示