方法引用笔记

方法引用:在使用Lambda表达式中,我们实际上传递进去的代码就是一中解决方案,拿什么参数做什么操作,那么考虑一种情况,如果我们在Lambda所制定的操作方案,已经存在,我们没必要再写重复逻辑。
方法引用常用用法:
1、通过对象名引用成员方法:
练习:
1、接口

package Demo02.methodReference;

@FunctionalInterface
public interface Printable {
    void print(String str);//打印字符串的抽象方法
}

类:

package Demo02.methodReference;

public class MethodReferenceObject {
    public void printUppercaseString(String s){
        System.out.println(s.toUpperCase());
    }
}

测试:

    package Demo02.methodReference;
    
    import java.lang.reflect.Method;
    
    /*
    通过对象名引用成员方法
    使用前提:对象名已经存在,成员方法已经存在,就可以使用对象名来引用成员方法。
     */
    public class Demo01MethodReference {
        public static void printString(Printable p){
            p.print("yaoyao");
        }
    
        public static void main(String[] args) {
        //三种输出效果相同。
            //printString(new MethodReferenceObject()::printUppercaseString);
            //printString(s-> System.out.println(s.toUpperCase()));
            //使用lambda表达式,表达式里创建MethodReferenceObject
            //接着调用对象里面的方法完成Lambda表达式的要求。
            printString((s)->{
                MethodReferenceObject obj = new MethodReferenceObject();
                obj.printUppercaseString(s);
            });
        }
    }

2、通过类名称引用静态方法:

package Demo02.methodReference;

public class Demo02StaticMethodRe {
    public static int method(int number,Calcable c){
        return c.calsAbs(number);
    }

    public static void main(String[] args) {
        int num = method(-10,n->Math.abs(n));
        System.out.println(num);
        /*num =method(-20,Math::abs);
        System.out.println(num);*/
        System.out.println(method(-1998,StaticMethodRe::method));
        
    }
}

3、通过super引用父类的成员方法:

package Demo02.Test1;

public class Man extends Human{
    @Override
    public void say(){
        System.out.println("Hello,我是子类");
    }
    public void method(Greetable g){
        g.great();
    }
    public void show(){
        /*method(()->{
            Human human = new Human();
            human.say();
        });*/
        method(super::say);//通过super引用成员方法
    }

    public static void main(String[] args) {
        new Man().show();
    }
}

4、通过This引用成员方法:

package Demo02.Test1;

public class Man extends Human{
    @Override
    public void say(){
        System.out.println("Hello,我是子类");
    }
    public void method(Greetable g){
        g.great();
    }
    public void show(){
        /*method(()->{
            Human human = new Human();
            human.say();
        });*/
        method(super::say);
    }

    public static void main(String[] args) {
        new Man().show();
    }
}

5、类的构造器的引用

package Demo02.Test3;
//类的构造器的引用
public class Demo {
    public static void printName(String name,PersonBuilder pb){
        Person person = pb.builderPerson(name);
        System.out.println(person.getName());
    }

    public static void main(String[] args) {
        printName("yaoyao",Person::new);
        
    }
}

5、数组的构造器的引用

李航的《统计学习方法》是一本经典的统计学习教材,其中涵盖了统计学习的基本理论和方法。该书主要介绍了统计学习的三要素:模型、策略和算法。引用提到,训练集用来训练模型,验证集用来选择模型,测试集用于对学习方法的评估。这些三要素是统计学习方法的基础。引用进一步解释了统计学习的目标,即通过构建概率统计模型对数据进行准确的预测与分析,并提高学习效率。引用提到了一种常用的统计学习方法,即提升(boosting),它通过改变训练样本的权重,学习多个弱分类器,并将它们线性组合成一个强分类器,以提高分类的性能。 总结起来,李航的《统计学习方法笔记主要围绕统计学习的基本理论和方法展开,介绍了统计学习的三要素、目标和提升等常用方法。这本书对于学习统计学习的人来说是一本非常有价值的参考资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [统计学习方法——李航 笔记](https://blog.csdn.net/qq_45383347/article/details/110482540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [李航《统计学习方法》学习笔记](https://blog.csdn.net/liuzuoping/article/details/98840923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值