// Java8函数式编程示例—(Predicate、Stream、Optional)   https://blog.csdn.net/weixin_41950473/article/details/84930562

//        Set<Integer> nums = new HashSet<>();
// for (int i = 0; i < 100; i++) {
// Integer num = (int) (100 * Math.random());
// nums.add(num);
// System.out.println(num.intValue());
// }
//
// // predicate语义
// Predicate<Integer> p1 = x -> x.intValue() > 40 && x.intValue() < 50;
// Predicate<Integer> p2 = x -> x.intValue() > 30 && x.intValue() < 80;
//
// List<Integer> res = nums.stream().filter(p1.and(p2)).collect(Collectors.toList());// 流式操作
//
// Collections.sort(res, Comparator.comparing(Integer::intValue));// 排序,Comparator List<Integer> res = Arrays.asList(6,9,12); // Optional
List<Integer> value =
Optional.ofNullable(res)
.map((param) -> {
return param.stream()
.map(x -> x / 3)
.collect(Collectors.toList());
})
.orElseThrow(IllegalArgumentException::new); System.out.println("--->"+value);
//两个List通过相同的属性值进行个别属性赋值  // https://www.jianshu.com/p/446eb7d3a261
//把user登录日志表中的 最后登录time 更新set到 该user表中
public static void main(String[] args) { List<UserVo> userList = new ArrayList<>();//这里要非空
List<UserLoginLogVo> userLoginLogVos = new ArrayList<>();//这里要非空 业务代码不贴出来
if(CollectionUtils.isNotEmpty(userLoginLogVos)) {
userList = userList
.stream()
.map(user -> userLoginLogVos.stream()
.filter(log -> user.getUserId().equals(log.getUserId()))
.findFirst() //返回集合流的第一个对象
.map(log -> {
user.setLastLoginTime(log.getLastLoginTime());
return user;
})
.orElse(user))
.collect(Collectors.toList());
}
}
@Data
static class UserVo{
private String userId;//用户全局ID
private Date lastLoginTime;//最后登录时间
}
@Data
static class UserLoginLogVo {
private String userId;//用户全局ID
private Date lastLoginTime;//最后登录时间
}

Java8---函数式编程-示例的更多相关文章

  1. Java8函数式编程探秘

    引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...

  2. 关于Java8函数式编程你需要了解的几点

    函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...

  3. Java8 函数式编程详解

    Java8 函数式编程详解 Author:Dorae Date:2017年11月1日23:03:26 转载请注明出处 说起Java8,可能很多人都已经知道其最大的改进,就是引入了Lambda表达式与S ...

  4. [2017.02.23] Java8 函数式编程

    以前学过Haskell,前几天又复习了其中的部分内容. 函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list.map.set,以及在这些数据结构上 ...

  5. 漫漫人生路,学点Jakarta基础-Java8函数式编程

    接口默认方法 Java8版本以后新增了接口的默认方法,不仅仅只能包含抽象方法,接口也可以包含若干个实例方法.在接口内定义实例方法(但是注意需要使用default关键字) 在此定义的方法并非抽象方法,而 ...

  6. Java8函数式编程以及Lambda表达式

    第一章 认识Java8以及函数式编程 尽管距离Java8发布已经过去7.8年的时间,但时至今日仍然有许多公司.项目停留在Java7甚至更早的版本.即使已经开始使用Java8的项目,大多数程序员也仍然采 ...

  7. 重识Java8函数式编程

    前言 最近真的是太忙忙忙忙忙了,很久没有更新文章了.最近工作中看到了几段关于函数式编程的代码,但是有点费解,于是就准备总结一下函数式编程.很多东西很简单,但是如果不总结,可能会被它的各种变体所困扰.接 ...

  8. [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念

      本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程?   java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...

  9. Java8函数式编程的宏观总结

    1.java8优势通过将行为进行抽象,java8提供了批量处理数据的并行类库,使得代码可以在多核CPU上高效运行. 2.函数式编程的核心使用不可变值和函数,函数对一个值进行处理,映射成另一个值. 3. ...

  10. java8函数式编程实例

    什么是函数式编程 函数式编程是java8的一大特色,也就是将函数作为一个参数传递给指定方法.别人传的要么是基本数据类型,要么就是地址引用 ,我们要穿一个“动作”. Stream 说到函数式编程,就不得 ...

随机推荐

  1. 【shell】文本匹配问题

    原文本通过TITLE分段 TITLE1 xxx yyy TITLE2 xxx yyy hello zzz hello TITLE3 xxx hello 类似于这样的,hello可能有多个,需要打印出含 ...

  2. 1.关于python 的hmac加密

    import base64 import hmac import urllib from hashlib import sha1 expires = b" # 过期时间戳 uuid = 'a ...

  3. 使用bitmap实现对一千万个无重复的正整数(范围1~1亿)快速排序

    1 Bytes(字节) == 8 bit 1 KBytes == 1024 Bytes 思路: 1)申请长度为1亿的保存二进制位的数组 a, 2)通过位运算,将整数做为索引,将数组a对应的索引位置为1 ...

  4. 配置MongoDB的Windows服务

    [1] 创建directorys和files Create a configuration file and a directory path for MongoDB log output (logp ...

  5. BZOJ 1901 洛谷 P2617 ZOJ 2112 Dynamic Rankings

    以下时空限制来自zoj Time limit 10000 ms Memory limit 32768 kB OS Linux Source Online Contest of Christopher' ...

  6. 点云数据中的三维信息提取pcl

    https://www.hanspub.org/journal/PaperInformation.aspx?paperID=24702 https://wenku.baidu.com/view/160 ...

  7. androi自定义自动换行的View(类似网页的标签Tag)

    看来只有礼拜天才有时间写点博客啊,平时只能埋头苦干了.今天在公司加班,遇到一个需求,就是自动换行的TextView,有点像网页的tag标签,点击一下,就自动加上去了,不过这个是根据后台拿来的数据来显示 ...

  8. Redis单节点部署

    安装Redis 由于REDIS使用单线程处理请求,CPU的快慢最对REDIS的性能有较大影响,官方建议INTEL的CPU,其效率能比AMD高一倍左右. 下载Redis:wget http://down ...

  9. Mysql中经常出现的乱码问题

    Mysql中执行SET NAMES utf8这条SQl的作用 1)首先,Mysql服务器的编码和数据库的编码在配置文件my.ini中设置: 用记事本打开配置文件,修改代码:default-charac ...

  10. modern php笔记---php (性状)

    modern php笔记---php (性状) 一.总结 一句话总结: trait是和继承一个层次的东西 一个类use MyTrait;后,trait中的方法覆盖父类方法,当前类中的方法覆盖trait ...