Lambda表达式
对匿名内部类的实现进行简化
基本格式
{
参数列表}->{
代码}
原先
new Thread(new Runnable(){
@Override
public void run(){
System.out.println("Hello");
}
}).start();
更改之后(Lambda只关注参数列表和方法体)
new Thread(()->{
System.out.println("Hello");
}).start();
更改条件:当传入的参数是一个接口实现类,且这个实现类只有一个方法需要重写
例1
import java.util.function.IntBinaryOperator;
public class Main {
public static void main(String[] args) {
//匿名内部类
int apply = apply(new IntBinaryOperator() {
@Override
public int applyAsInt(int left, int right) {
return left * right;
}
});
//或者
int apply = apply((int left, int right) -> {
return left * right;});
//或者,省略参数类型
int apply = apply((left, right) -> {
return left * right;});
//或者,省略参数类型和return
int apply = apply((left, right) -> left * right);
}
public static int apply(IntBinaryOperator op) {
int sum = 20;
int sum1 = 10;
return op.applyAsInt(sum, sum1);
}
得出:Lambda只关注参数列表和方法内容
例2
public class Main {
public static void main(String[] args) {
//匿名内部类
Integer i = typeContext(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return s.length();
}
});
//或者,省略参数类型(Lambda体有括号)
Integer i = typeContext(s -> {
return s.length();
});
//或者,省略参数类型、return、参数只有一个省略小括号
Integer i = typeContext(s -> s.length());
}
public static <R> R typeContext(Function<String, R> function) {
String s = "123";
R r = function.apply(s);
return r;
}
使用Alt+Enter可以相互转换


Stream流
之前的IO流用于读写数据,Stream是对集合的操作
编写可使用Stream流的实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor//无参构造方法
@AllArgsConstructor//有参构造方法
@EqualsAndHashCode//编译时为你生成正确的、符合约定的 equals() 和 hashCode() 方法
public class Author {
private</

最低0.47元/天 解锁文章

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



