Lambda表达式的标准格式
组成Lambda表达式的三要素:形式参数,箭头,代码块
Lambda表达式的格式
①、格式:(形式参数) -> {代码块}
②、形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
③、->:由英文中画线和大于符号组成,固定写法。代表指向动作
④、代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
import java.util.*;
import java.util.function.Function;
import java.util.function.IntBinaryOperator;
import java.util.function.IntConsumer;
import java.util.function.IntPredicate;
import java.util.stream.Collectors;
@SpringBootTest
class Springboot001ApplicationTests {
@Test
void contextLoads() {
//查询未成年评分在70以上的作品
List<Author> authors = new ArrayList<>();
List<Book> bookList=new ArrayList<>();
Set<Book> uniquebookvalues = new HashSet<>();
Set<Author> uniqueAuthorValues=new HashSet<>();
for (Author author : authors) {
if(uniqueAuthorValues.add(author)){
if(author.getAge()<18){
List<Book> books = author.getBooks();
for (Book book : books) {
if(book.getScore()>70){
if(uniquebookvalues.add(book)){
bookList.add(book);
}
}
}
}
}
}
List<Book> collect=authors.stream()
.distinct().filter(author -> author.getAge()<18)
.map(author -> author.getBooks())
.flatMap(Collection::stream )
.filter(book -> book.getScore()>70)
.distinct().collect(Collectors.toList());
}
@Test
void test1(){
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("你咋了");
}
}).start();
// List<DouArea> douAreas = new DouAreaService() {
// @Override
// public List<DouArea> queryAllDouArea(String parentId) {
// return null;
// }
// }.queryAllDouArea("1");
// System.out.println(douAreas);
// DouAreaService douAreaService = new DouAreaServiceImpl();
// List<DouArea> douAreas1 = douAreaService.queryAllDouArea("1");
// System.out.println(douAreas1);
new Thread(()->{
System.out.println("线程启动了");
}).start();
}
@Test
void test3(){
// int i = calculateNum(new IntBinaryOperator() {
// @Override
// public int applyAsInt(int left, int right) {
// return left + right;
// }
// });
// System.out.println(i);
// int i = calculateNum((int left, int right) ->{
// return left + right;
// });
// System.out.println(i);
int i = calculateNum((int left, int right) ->
left + right);
System.out.println(i);
}
public static int calculateNum(IntBinaryOperator operator){
int a=10;
int b=20;
return operator.applyAsInt(a,b);
}
@Test
void test4(){
// printNum(new IntPredicate() {
// @Override
// public boolean test(int value) {
// return value%2==1;
// }
// });
// printNum((int value) ->{
// return value%2==1;
// });
printNum(value ->
value%2==1
);
}
public static void printNum(IntPredicate intPredicate){
int[] arr={1,2,3,4,5,6,7,8,9,10};
for (int i : arr) {
if(intPredicate.test(i)){
System.out.println(i);
}
}
}
@Test
void test5(){
// Object o = typeConver(new Function<String, Object>() {
// @Override
// public Object apply(String s) {
// return s + "123";
// }
// });
// System.out.println(o);
Object o = typeConver((String s) ->
s + "123"
);
System.out.println(o);
}
public static <R> R typeConver(Function<String,R> function){
String str="12345";
R result=function.apply(str);
return result;
}
public static void foreachArr(IntConsumer intConsumer){
int[] arr={1,2,3,4,5,6,7,8,9,10};
for (int i : arr) {
intConsumer.accept(i);
}
}
@Test
void test6(){
foreachArr(value->{
System.out.println(value+10 );
});
}
}