0
点赞
收藏
分享

微信扫一扫

【Java】Java8 JDK8 Stream 流 Lambda表达式 用法 整理

dsysama 2022-12-13 阅读 111


【Java】Java8 JDK8 Stream 流 Lambda表达式  用法 整理

目录

​​介绍​​

​​用法​​

​​基础​​

​​生成流​​

​​Collect用法​​

​​List 转 Map​​

介绍

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。

用法

基础

生成流

在 Java 8 中, 集合接口有两个方法来生成流:

  • stream() − 为集合创建串行流。
  • parallelStream() − 为集合创建并行流。

Collect用法

List 转 Map

@Test
public void listToMap(){

List<Map> list = new ArrayList<>();

list.add( MapUtil.of(new String[][]{
{"id", "1"},
{"name", "张三"},
}));
list.add( MapUtil.of(new String[][]{
{"id", "2"},
{"name", "李四"},
}));
list.add( MapUtil.of(new String[][]{
{"id", "3"},
{"name", "王五"},
}));

Map<Object, Map> id = list.stream().collect(Collectors.toMap(k -> k.get("id"), obj -> obj));

System.out.println(JSONUtil.parseObj(id).toStringPretty());

}

list 类型转换


stream().map(u -> BeanUtil.toBean(u, NewUser.class)).collect(Collectors.toList());


列表去重list去重

//通过姓名跟手机号去重
List<User> users= userList.stream().collect(Collectors
.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator
.comparing(o -> o.userName() + ";" + o.phone()))), ArrayList::new));

通过hashSet去重(如将classNames去重):该种去重是bean完全相同的时候算重复数据

List<String> classNameList = new ArrayList(new HashSet(classNames));

举报

相关推荐

0 条评论