当前位置: 代码网 > it编程>编程语言>Java > Java8中stream流的collectingAndThen方法应用实例详解

Java8中stream流的collectingAndThen方法应用实例详解

2025年03月04日 Java 我要评论
1.方法定义:此方法是在进行归纳动作结束之后,对归纳的结果进行二次处理。2.代码演示:user类准备/** * @desc: 用户实体类 * @author: shy * @date: 2020/12

1.方法定义:

此方法是在进行归纳动作结束之后,对归纳的结果进行二次处理。

2.代码演示:

user类准备

/**
 * @desc: 用户实体类
 * @author: shy
 * @date: 2020/12/28 12:38
 */
@data
@allargsconstructor
public class user {
    //用户id
    int userid;
    //用户姓名
    string username;
    //用户工资
    double salary;
}

数据填充

//数据准备
user user1 = new user(1, "hangman", 100d);
user user2 = new user(1, "list", 200d);
user user3 = new user(2, "wing", 200d);
user user4 = new user(2, "zeal", 100d);
user user5 = new user(3, "tuba", 300d);
list<user> userlist = new arraylist<>();
userlist.add(user1);
userlist.add(user2);
userlist.add(user3);
userlist.add(user4);
userlist.add(user5);

1.对集合根据id进行去重并返回去重后的list:

//对集合的结果进行去重
list<user> list = userlist.stream()
    .collect(collectors.collectingandthen(collectors.tocollection(() -> new treeset<>(comparator.comparing(user::getuserid))), arraylist::new));
system.out.println(list);

2.对集合根据id进行去重并返回去重后的map:

//对集合的结果进行去重
map<integer, user> usermap = userlist.stream()
                .collect(collectors.collectingandthen(
                        collectors.tocollection(() -> new treeset<>(comparator.comparing(user::getid))),
                        treeset -> treeset.stream().collect(collectors.tomap(user::getid, user -> user, (u1, u2) -> u1))
                ));
        system.out.println(usermap);

3.查找工资最高的员工的姓名:

//查找工资最高的员工的姓名
string username = userlist.stream()
	.collect(collectors.collectingandthen(collectors.maxby(comparator.comparing(user::getsalary)),(optional<user> user) -> user.map(user::getusername).orelse(null)));
system.out.println(username);

4.计算用户工资的平均值:

//计算用户工资的平均值
double avgsalary = userlist.stream()
	.collect(collectors.collectingandthen(collectors.averagingdouble(user::getsalary), double::doublevalue));
system.out.println(avgsalary);

3.总结:

通过上面的例子,我们可以熟练的使用collectingandthen进行归纳的结果进行二次处理。

到此这篇关于java8中stream流的collectingandthen方法应用实例的文章就介绍到这了,更多相关java8 stream流 collectingandthen内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com