对接口使用
接口中只能有一个必须被实现的方法
基础语法
() -> {}
- ():描述参数列表
- {}:描述方法体
无参无返回值
public interface LambdaNoReturnAndParameter {
void test();
}
@Test
void lambda(){
LambdaNoReturnAndParameter lambda = ()->{
System.out.println("hhh");
};
lambda.test();
}
有参返回值
public interface LambdaTest {
int test(int a);
}
@Test
void lambda(){
LambdaTest lambdaTest = (a)->{
return a;
};
System.out.println(lambdaTest.test(1));
}
- 单个参数()可以省略
- 方法体中单行代码,{}可以省略
- 如果单行代码是return,那么{}和return都可以省略
静态方法引用
引用的方法要和接口中的方法一致
public interface LambdaTest1 {
int test(int a);
}
public class LambdaTest2 {
public static int test(int a) {
System.out.println("hhh");
return a;
}
}
@Test
void lambda1(){
LambdaTest1 lambdaTest1 = LambdaTest2::test;
lambdaTest1.test(3);
}
构造方法引用
public interface LambdaTest {
Person getPerson();
}
public class Person {
public Person() {
System.out.println("无参");
}
}
@Test
void lambda(){
LambdaTest lambdaTest = Person::new;
lambdaTest.getPerson();
}
集合
public class LearnLambda {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User("zhangsan3",12));
list.add(new User("zhangsan1",10));
list.add(new User("zhangsan2",11));
list.add(new User("zhangsan5",14));
list.add(new User("zhangsan4",13));
//降序
list.sort((o1,o2) ->o2.getAge() - o1.getAge());
System.out.println(list);
//升序
list.sort(Comparator.comparingInt(User::getAge));
System.out.println(list);
//删除年龄大于12的
list.removeIf(user -> user.getAge() > 12);
System.out.println(list);
}
}
class User{
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getAge() {
return age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
List转List
List<User> list = .......
List<Integer> collect = list.stream().map(user -> user .getId()).collect(Collectors.toList());
List转Map
List<User> list = .......
Map<Integer, User> map= list .stream().collect(Collectors.toMap(User::getId, user-> user));
Map<Integer, List<User>> groupBy = list .stream().collect(Collectors.groupingBy(User::getId));
Map转List
HashMap<Integer, String> map = new HashMap<>();
map.put(1,"zhangsan");
map.put(2,"lisi");
map.put(3,"wangwu");
map.put(4,"xiaoming");
List<String> collect = map.entrySet().stream().map(e -> e.getValue()).collect(Collectors.toList());
10万+

被折叠的 条评论
为什么被折叠?



