package com.example.jdk8demo;
import com.example.jdk8demo.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@SpringBootTest
class Jdk8DemoApplicationTests {
/*测试lambda 表达式*/
@Test
public void lambdaTest(){
//遍历集合并输出
Arrays.asList( "a", "b", "d" ).forEach(e -> System.out.println( e ) );
System.out.println("------------------------------------------------------------");
//指定元素的类型,并遍历输出
Arrays.asList( "a", "b", "d" ).forEach( ( String e ) -> System.out.println( e ) );
System.out.println("------------------------------------------------------------");
//遍历集合后进行复杂的逻辑处理,使用{} 进行封装
Arrays.asList( "a", "b", "d" ).forEach( e -> {
if (e.equals("a")){
System.out.println("是a");
}
} );
System.out.println("------------------------------------------------------------");
//Lambda表达式可以引用类成员和局部变量(会将这些变量隐式得转换成final的),会将 separator变量 在lambda表达式中变为final
String separator = ",";
Arrays.asList( "a", "b", "d" ).forEach(
( String e ) -> System.out.print( e + separator ) );
System.out.println("------------------------------------------------------------");
//Lambda表达式有返回值,返回值的类型也由编译器推理得出。如果Lambda表达式中的语句块只有一行,则可以不用使用return语句
Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> e1.compareTo( e2 ) );
//等价于
/*Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> {
int result = e1.compareTo( e2 );
return result;
} );
*/
}
@Test
public void streamTest(){
List<User> userList = Arrays.asList(
new User("用户1", 16, 0),
new User("用户2", 17, 1),
new User("用户3", 18, 0),
new User("用户4", 19, 1),
new User("用户5", 20, 0),
new User("用户6", 21, 1),
new User("用户7", 22, 0)
);
//获取流并进行集合set化,然后遍历输出
userList.stream().collect(Collectors.toSet()).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
//获取流,filter 遍历集合,根据->后的逻辑获取对应的过滤的集合,然后使用collect进行集合化,最后遍历输出
userList.stream().filter(user -> user.getAge()>18 && user.getSex().equals(0)).collect(Collectors.toSet()).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
/*map()方法的参数为Function(函数式接口)对象,
map()方法将流中的所有元素用Function对象进行运算,生成新的流对象(流的元素类型可能改变)。*/
List<Integer> numbers = Arrays.asList(-1, -2, 0, 4, 5);
numbers.stream().map( n -> Math.abs(n)).forEach(n -> System.out.println("Element abs: " + n));
System.out.println("------------------------------------------------------------");
/*flatMap 和 map 的区别*/
List<String> list = Arrays.asList("1 2", "3 4", "5 6");
list.stream().flatMap(item -> Arrays.stream(item.split(" "))).forEach(System.out::println);
list.stream().map(item -> Arrays.stream(item.split(" "))).forEach(n ->n.forEach(System.out::println));
System.out.println("------------------------------------------------------------");
/*reduce 累加器*/
List<Integer> numbers1 = Arrays.asList(-1, -2, 0, -1, 4, 5, 1);
Integer total = numbers1.stream().reduce((t, n) -> t + n).get();
System.out.println("Total: " + total);
System.out.println("------------------------------------------------------------");
/*collect方法*/
numbers1.stream().collect(Collectors.toCollection(ArrayList::new)).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
/*limit 限制输出的个数为2*/
numbers1.stream().filter(n -> n>0).limit(2).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
/*sorted 进行排序*/
numbers1.stream().sorted().forEach(System.out::println);
System.out.println("------------------------------------------------------------");
/*sorted 使用compare 方法进行排序,变换两个变量的位置可实现正序和倒序*/
numbers1.stream().sorted((o1,o2)->o1.compareTo(o2)).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
numbers1.stream().sorted((o1,o2)->o2.compareTo(o1)).forEach(System.out::println);
System.out.println("------------------------------------------------------------");
/*map 中的Function 函数式接口,一个参数,一个返回值*/
numbers1.stream().map(t->t+=2).forEach(System.out::println);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
jdk8 新特性stream 和lambda表达式Demo (169个子文件)
05ef46ec69fdfde31ced91a557cbc08739922d 383B
0c88dff2e2b2410dc06025e5ebeb0da9226abb 243B
11b75dcf4a50ab824b32cb3e16a64b4b39f87f 227B
127c293eb56dbb26c1cc69af4b1a1cd58802ec 210B
13209210a4cd883e073c3125b06c2ee734895a 218B
1333a9dc01815b780893d620726fb965653908 225B
13def613e219a944b47f973641c7b0485b04bf 211B
144f8b284906b7b715aca38b83b92b5ea9a4d3 229B
19017deefb516585397c8153c15693360ed947 245B
1b88de971e0a306d298dcb9c24b07c4b900811 246B
1d0959f750d15fd42de185cd84131e967c48d3 235B
20caf8d0da0d88564252963aede61b93d1819e 232B
213f73868a39471664c431bdb5073055eb36d5 230B
24f41518f3a822e4c0120b57bfeaf93ced076d 240B
34d27c2cbf0522323e767e6638bbd3d65f15e4 241B
367e75fd8c350c516152bc439026b0147a6b1b 224B
3aebea8b18775db550bed2779138258a7281cf 235B
3b9f942d0b87a81f7ede4051ad375f33074197 218B
3e588b0dfdd9e5020c1f638296b3937a9250ee 250B
3f174d371858e3c4e95b573333fa25304d30b6 228B
3ffb131ceafb74299f52b72919269f4bb73aa5 235B
4b33f3cc7ef692050d892e580d6c6b91dad971 229B
4efd2aa394ef7643b138e9d5f6da568d7b1da4 238B
5078321a92ac15b9ae34a060391d17328816e8 227B
5496ff097a7fd9b72025c4acf36cda1416eda3 210B
55a998780a3352b3706bc6c89e9280257b8d39 275B
5653d386a31b578a041060fd90166aad2c14ef 249B
566b81b018ad684f3a35fee301741b2734c8f4 141B
56db882423561ca037dab9a1da07df1fe16254 227B
57bb41434dee18cfccd97687a3a9a847c9751c 222B
57e32807fa3c2eee4a4a940cc65a314d41dcce 219B
581a6f5eef96c4979f258063e7c7c8d633f024 250B
591b72059ecac97c7b25bf11fcd98164719c71 235B
596c84ad62ef6d5a7f56a0565351c944e0c10d 225B
5dc73eb2ec1a43f77c154feafd6057bdb3c9dd 237B
61dc731096982d53d0b4bc712a86f0f102d32c 363B
6eca009a0755c74459582be64e981aaca60996 233B
715299801077ec827cbb750a86478adde4ab7a 213B
77cdecb654b4643c323f1b95e6e4994d7a4a95 245B
7ac50fffe324a090e965990ae04edeb11e0682 224B
7f648a6d6786a7085bef611594988964d8c0ca 218B
8291b3496ef7c2fcfc2a084f8bfabdebbc98ff 231B
835a43e5578c3bd78948e4d270450e7543f8be 245B
90656e69bb0356d5fbed85d2639aeac6c5f16a 224B
981dd2774b20c530857aea58c8e63ae67294ad 251B
987aa774b02b87548440c3aef8033e31b056e0 240B
9a81bf91dd185be6130ae9ad591bdcd2ecf943 245B
a5bb6ad6b04700e460a1d9e81f4be59b5d15f2 246B
a9dd244f222ce7ecbdcab4c7f9621a57fe1a67 228B
ac086e9ab0a33e2f5770e3367726fd532a5e1b 232B
b47ac19815ada094aa1874d007e932f87292bc 228B
b596efe4e37b97153d293b7e6354e93d7b07f6 218B
c1b1635a2c69174f8bea7d6306f5175015adc0 213B
c1c42c6bddbae8d8a2b945ac4b3d58ed4807e2 220B
c54d6d5452b5e2f25085adb2d2b98c38ae4731 224B
Jdk8DemoApplicationTests.class 8KB
User.class 2KB
Jdk8DemoApplication.class 753B
mvnw.cmd 7KB
config 241B
d31dbe7a7ab7e8ca6cb0e5ed2e283e7c2e11c8 246B
d9656a227e423f17ec702bd1ed9c015de5706c 254B
de89f17ba53397eeb2c845f8a8ec67b24469b0 231B
description 73B
e3cae97a5a87ed119a0dc470b9bba93f8b4f1d 219B
e3f235367d37668bbcdeb9c6fff4818ba79110 229B
e5239e4be49fb4488b76ab60e1c8db5f228d8b 183B
e67e6678ac2680077fa5d2dff0b9905ae6da76 219B
e850b5c09c44a102df6c2127f29a251d5214f8 238B
e900193296f8ed911a1b9f5b051cf908099431 158B
eae04fdc9222cfa82c0ecfac793376eb5c5e40 243B
eb9538d57be6ff4e35919b671b9be39d588c9d 238B
exclude 240B
f4034929d8be5ed3663b7249b1e1a57f26d2ec 217B
.gitignore 395B
.gitignore 184B
HEAD 23B
jdk8Demo.iml 8KB
index 8KB
maven-wrapper.jar 57KB
Jdk8DemoApplicationTests.java 5KB
Jdk8DemoApplication.java 329B
User.java 299B
HELP.md 893B
mvnw 10KB
maven-wrapper.properties 233B
application.properties 1B
application.properties 1B
pre-rebase.sample 5KB
fsmonitor-watchman.sample 5KB
update.sample 4KB
push-to-checkout.sample 3KB
pre-commit.sample 2KB
prepare-commit-msg.sample 1KB
pre-push.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
applypatch-msg.sample 478B
pre-applypatch.sample 424B
pre-merge-commit.sample 416B
共 169 条
- 1
- 2
会遗忘的猪
- 粉丝: 72
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1