-
JAVA8 Stream学习三、中间操作
三、中间操作
筛选与切片
3.1 filter()
接受lambda表达式,从流中排除某些元素
@Test
public void test2(){
//获取一个数组
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i <10; i++) {
arrayList.add(i);
}
//流操作:获取大于5的
arrayList.stream().filter((num)->num>5).forEach(System.out::println);
}
//结果: 6 7 8 9
3.2 limit()
截断流,使其元素个数不超过一定数量
满足limit的数量后,就短路,不在执行后续操作
@Test
public void test2(){
//获取一个数组
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i <10; i++) {
arrayList.add(i);
}
//流操作:获取大于5的
arrayList.stream().filter((num)->num>5)
.limit(2)
.forEach(System.out::println);
}
//结果: 6 7
3.2 skip()
跳过元素,跳过前n个元素,执行后面的元素,如果不足n个则返回空流
@Test
public void test2(){
//获取一个数组
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i <10; i++) {
arrayList.add(i);
}
//流操作:获取大于5的
arrayList.stream().filter((num)->num>5)
.skip(2)
.forEach(System.out::println);
}
//结果: 8 9
3.3 map()
映射,在方法中使用方法Function< T> 函数型接口 -----> R apply(T t);
@Test
public void test4(){
//获取一个list
List<String> list = Arrays.asList("aaa","bbb","ccc");
//使用流操作 转化大写
list.stream().map((str)->str.toUpperCase())
.forEach(System.out::println);
}
/*结果:AAA
BBB
CCC*/
@Test
public void test3(){
//获取一个list
List<String> list = Arrays.asList("aaa","bbb","ccc");
//流操作: 将list中的元素取出
//第一步使用map取出流,流里存放的还是流
//因此需要二次foreach
Stream<Stream<Character>> chs = list.stream().map(StreamTests::getUpper);
chs.forEach((stream)->{
stream.forEach(System.out::print);
});
}
//将str返回为流对象
public static Stream<Character> getUpper(String str){
List<Character> list = new ArrayList<>();
for (Character character: str.toCharArray()){
list.add(character);
}
return list.stream();
}
//结果:aaabbbccc
3.3.1 flatMap
相当于集合方法的 addAll
即:将流中的流内元素取出,放入一个流中,而不是流内套流
@Test
public void test3(){
//获取一个list
List<String> list = Arrays.asList("aaa","bbb","ccc");
//流操作: 将list中的元素取出
//第一步使用map取出流,流里存放的还是流
//因此需要二次foreach
Stream<Stream<Character>> chs = list.stream().map(StreamTests::getUpper);
chs.forEach((stream)-> stream.forEach(System.out::print));
System.out.println("\n=====");
//方法二:
//使用flatMap
list.stream().flatMap(StreamTests::getUpper).forEach(System.out::print);
}
3.4 sorted
@Test
public void test5(){
List<String> list = Arrays.asList("aaa", "ccc", "bbbb", "eeeee");
//自然排序
list.stream()
.sorted()
.forEach(System.out::println);
System.out.println("=============");
//定制排序
list.stream()
.sorted((x,y)->{
//如果长度一样,则按照字典排序
if (x.length() == y.length()){
return x.compareTo(y);
}
//如果长度不一样则按照长度的降序排序
else {
return y.length() - x.length();
}
})
.forEach(System.out::println);
}
/*结果:
aaa
bbbb
ccc
eeeee
=============
eeeee
bbbb
aaa
ccc
*/
出处:https://www.cnblogs.com/Gao-yubo/p/15223669.html
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比