1.获取数组最小值
@Slf4j
public class Demo1 {
public static void main(String[] args) {
int[] arr = {99,-99,10,5,6,20,-20};
int num = Arrays.stream(arr).min().getAsInt();
log.info(String.valueOf(num));
}
}
结果:-99
2.并行流获取数组最小值(在大数据量时候效率更高)
@Slf4j
public class Demo1 {
public static void main(String[] args) {
int[] arr = {99,-99,10,5,6,20,-20};
int num = Arrays.stream(arr).parallel().min().getAsInt();
log.info(String.valueOf(num));
}
}
3.线程创建
@Slf4j
public class Demo1 {
public static void main(String[] args) {
//lambda方式
new Thread(() -> System.out.println("aaa")).start();
//普通方式
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("bbb");
}
}).start();
}
}
4.函数式接口
两个入参一个返回值的函数接口BiFunction
public class FunctionDemo {
public static void main(String[] args) {
BiFunction<Integer,Integer,Integer> f = (i1, i2)->i1.compareTo(i2);
Integer apply = f.apply(1, 2);
System.out.println(apply);//结果为-1
}
}
静态方法调用
类名::静态方法名 例如:
public class User {
public static String eat(String foods){
return "吃早餐:"+foods;
}
}
public class FunctionDemo {
public static void main(String[] args) {
Function<String,String > f = User::eat;//
System.out.println(f.apply("面包"));
}
}
其实非静态方法也可以这样调用
public class User {
private Integer id;
private String name;
public static String eat(String foods){
return "吃早餐:"+foods;
}
public String eat2(String food){
return "食物是:"+food;
}
}
public static void main(String[] args) {
BiFunction<User, String, String> eat2 = User::eat2;//调用eat2()非静态方法,但是需要传入对象。因为eat2(String food)底层其是eat2(User this,String food)
System.out.println(eat2.apply(new User(),"肠粉"));
}
无参构造调用
public static void main(String[] args) {
Supplier<User> s = User::new;//调用无参构造
User user = s.get();
}
有参构造调用
public static void main(String[] args) {
Function<Integer,User> f = User::new;//有参构造public User eat(Integer id){this.id=id}调用
User user2 = f.apply(1);
System.out.println(user2);
}