-
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
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比