初学java Stream以及Lambda表达式" -> "
来源:互联网 发布:华师网络教育平台 编辑:程序博客网 时间:2024/06/11 16:01
前言
作为一个初学者,只学习了很早的java版本,新版本的很多知识都不了解,只能一点一点积累了
正文
最近在晚上发现了一串没见过的java代码:
Collections.sort(names, (String a, String b) -> b.compareTo(a));
很好奇这是一种什么写法,java还有这种 “-> ”符号?
度娘后在知道是Lambda表达式;
现在会粗浅的使用了,下面举个栗子说一下lambda表达式:
有一个集合list
List<String> names = Arrays.asList("Jack", "Jill", "Nate", "Kara", "Kim", "Jullie", "Paul", "Peter");
现在需要遍历其中的元素,一般是用增强for循环
for(String name : names) {
System.out.println(name);
}
但是使用lambda表达式可以这样写
names.forEach(n -> System.out.println(n));
两者输出情况一样 可以看出lambda简化了代码;
下面举个栗子 说一下stream:
加入现在我需要将每个元素用“,”连起来拼成一个字符串,一般做法是
StringBuffer newstr=new StringBuffer();
for(String name : names) {
newstr.append(name+",");
}
System.out.println(newstr);
输出:
Jack,Jill,Nate,Kara,Kim,Jullie,Paul,Peter,
还需要去掉最后一个逗号:
newstr.deleteCharAt(newstr.length()-1);
System.out.println(newstr);
输出:
Jack,Jill,Nate,Kara,Kim,Jullie,Paul,Peter
代码量稍多,但是用Stream写,如下:
System.out.println(
names.stream()
.collect(Collectors.joining(", "))
);
这个直接输出:
Jack,Jill,Nate,Kara,Kim,Jullie,Paul,Peter
查询jdk1.8api可知:stream()是Collection接口中的方法,返回以此集合作为源的顺序Stream
;
collect()是Stream接口中的方法,解释如下:
collect(Collector<? super T,A,R> collector) ,使用 Collector对此流的元素执行 mutable reduction Collector 。
Collectors.joining(", ")返回一个 Collector ,按照遇到的顺序连接由指定的分隔符分隔的输入元素。
如果我还需要筛选出names中长度为4的字符串,并以“,”号拼接,则可以混用lambda表达式这样写:
names.stream()
.filter(ss ->ss.length()==4) //这一步是依次序筛选出条件为长度为4的数据并生成新的Stream
.collect(Collectors.joining(", "))
);
- 初学java Stream以及Lambda表达式" -> "
- 深入浅出理解JAVA 8 Lambda表达式 Stream
- Java8 Lambda 表达式、Stream
- Java8新特性-Lambda表达式以及stream详解
- Java之Lambda表达式和Stream类简单例子
- Java 8新特性 Lambda、方法引用以及Stream
- java lambda stream 例子
- Java8 Lambda表达式与Stream API (一):Lambda表达式
- Java8 之 lambda表达式 与 Stream
- lambda表达式及Stream语法解析
- JDK1.8之stream lambda表达式
- java8 lambda表达式之 Stream常用方法
- Java8之Stream/Map以及Lambda
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- Java 8新特性:全新的Stream API和lambda表达式
- docker 命令
- 运用decorate装饰器模拟网页登陆(含代码)
- html,js 推箱子游戏
- 修改emqtt中auth-mysql插件
- maven国内镜像配置(Ubuntu)
- 初学java Stream以及Lambda表达式" -> "
- 最新企业管理软件发展趋势分析
- Token ,Cookie和Session的区别
- zxing安卓项目学习1——CaptureActivity之onCreate——BeepManager
- [Leetcode] 391. Perfect Rectangle 解题报告
- Second Minimum Node In a Binary Tree问题及解法
- 将应用的log4j换成logback
- Windows下运行C语言版Word2Vec训练词向量
- Activiti进阶(十)——分配个人任务的三种方式