lambda 表达式就只有一个简化代码的作用,下面就一步一步看看他是如何简化穿创建实例的
1.普通调用一个实例的方法demo,在一个实例中地调用另一个实例方法
public class Demo{
public void Test(Fun fun){
fun.funTest();
}
public static void main(String[] args){
Demo a = new Demo();
Fun b = new Fun();
a.Test(b);
}
}
class Fun{
public void funTest(){
}
}
这种先编写一个类,然后在new再传入过于繁琐;
2.接口匿名局部类,稍微优化;匿名也是快速创建对象作用;
public class Demo{
public void Test(Fun fun){
fun.funTest()
}
public static void main(String[] args){
Demo a = new Demo();
Fun b = new Fun();
a.Test(new Fun(){
public void funTest(){};
});
}
}
interface Fun{
public void funTest()
}
3.lambda表达式快速创建;
public class Demo{
public void Test(Fun fun ){
fun.funTest();
}
public static void main(String[] args){
Demo a = new Demo();
a.Test(()->{}); //这里就直接快速创建好了简单明了
}
}
interface Fun{
public void funTest()
}
4.lambda表达是能够快速创建对象有一下几点要求
***1.接口抽象方法只有一个,可有默认多个方法,静态方法;也叫函数接口
***2.lambda内部使用的表里会自动加上final
系统提供了四大类函数接口 写的不错的 复制一遍备份一下
//打印字符串
public static void main(String[] args) {
handle("Hello world!", (s) -> System.out.println(s));
}
public static void handle(String s, Consumer<String> con) {
con.accept(s);
}
public static void main(String[] args) {
List<Integer> list = getNumList(10, () -> (int)(Math.random() *100));
for(Integer i:list) {
System.out.println(i);
}
}
//产生指定个数的整数,并将其置于集合中
public static List<Integer> getNumList(int num, Supplier<Integer> sup){
List<Integer> list = new ArrayList<>();
for(int i = 0; i < num; i++) {
list.add(sup.get());
}
return list;
}
//将字符串转化为整型
public static void main(String[] args) {
System.out.println(convert("100", (e) -> Integer.parseInt(e)));
}
public static Integer convert(String str, Function<String, Integer> fun) {
return fun.apply(str);
}
// 将满足条件的整数放于集合中
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 5, 7, 11, 20, 47);
List<Integer> myList = filterInt(list, (e) -> e > 3);
for(Integer i : myList) {
System.out.println(i);
}
}
public static List<Integer> filterInt(List<Integer> list, Predicate<Integer> pre ){
List<Integer> myList = new ArrayList<>();
for(Integer i : list) {
if(pre.test(i)) {
myList.add(i);
}
}
return myList;
}
网友评论