文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java8 中常用的List Stream场景

2024-11-30 16:54

关注

Stream是Java 8添加的一个API,结合Lambda表达式,可以提高我们对对集合处理的编码效率。在日常工作中,我们经常会遇到List转Map的情况,在Stream出来之前,我们一般都是遍历放进map中。

这里,我们假设有个User对象。

@Getter
@Setter
public class User
{
private String id;

private String name;

private Integer age;
}

List转Map

  1. Map中keyvalue都是User对象中的属性值。
  2. Map userMap = users.stream().collect(Collectors.toMap(User::getId, User::getName))。
  3. Map中keyUser对象的属性值,valueUser对象。
  4. Map userMap = users.stream().collect(Collectors.toMap(User::getId, User -> User))。
  5. 如果,我们的List中,key值重复,则会出现Duplicate key异常,这时候,我们可以使用覆盖的方式来避免这种异常。
  6. Map userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (oldVal, newVal) -> newVal))。
  7. Map中keyUser对象的属性值,valueUserList。
Map<String, User> userMap = users.stream().collect(Collectors.groupingBy(User::getId));

filter

  1. list stream过滤数据
  2. List filterUsers=users.stream().filter(item -> item.getName().equals("xxx")).collect(Collectors.toList());
  3. 去重过滤
  4. List ids=new ArrayList<>(); List distinctUsers=users.stream().filter(item->{ if(!ids.contains(item.getId())){ ids.add(item.getId()); return true; }else{ return false; } }).collect(Collectors.toList());
  5. stream有提供distinct去重的函数。

sorted

1 .按年龄升序排。

List<User> sortUsers= users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());

2.按年龄降序排。

List<User> sortUsers= users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());

除了上面的一些函数外,还有功能强大的函数,如:limitmaxreduce等。

Java Stream Debugger

在我们使用Stream之后,调试是一个问题。

IDEA 2018后,会自带Java Stream Debugger这个插件,有助于我们更直观的了解Stream的执行过程。插件有了,我们该如何使用呢?

  1. 在需要调试Stream的地方,打上断点。

2.debug模式启动后,在debug窗口中点击Trace Current Stream Chain

我们可以点击切换上面每一步的tab,查看其执行的一个大致过程,我们也可以切换到Flat Mode模式

这里只是列举了几个常用的API,针对Stream的能力远比上面列举几个简单的功能要强大。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯