2021.6.28笔记 方法引用


基本介绍

在这里插入图片描述

public class NewDemo {
    public static void printData(NewInterface inter) {
        inter.print("HelloWorld");
    }

    public static void main(String[] args) {
        printData(/*s->{
            System.out.println(s);
        }*/System.out::println);		//system.out引用println方法
    }
}

通过对象名引用成员方法

在这里插入图片描述

public interface MethodCite1 {
    public abstract void print(String str);
}
public class MethodObj {
    public void method(String str) {
        System.out.println(str.toUpperCase());
    }
}
public class TheTotalClass {
    public static void method01(MethodCite1 mc1) {
        mc1.print("Hello");
    }

    public static void main(String[] args) {
        method01((s)->{
            MethodObj newObj = new MethodObj();
            newObj.method(s);
        });
    }
}

其实就等价于

public class NewObj {
    public static void method01(MethodCite1 mc1) {
        mc1.print("Hello");
    }

    public static void main(String[] args) {
        method01(new MethodCite1() {
            @Override
            public void print(String str) {			//匿名内部类重写接口的抽象方法
                MethodObj newObj = new MethodObj();
                newObj.method(str);
            }
        });
    }
}

虽然觉得确实可以省略代码,但是总感觉阅读起来没那么流畅。。。


通过类名引用静态成员方法

在这里插入图片描述

public class TheTotalClass {
    public static int method01(int number, MethodCite1 mc1) {
        return mc1.printAbs(number);
    }

    public static void main(String[] args) {
        /*int number = method01(-10,(n)->{
            return Math.abs(n);
        });*/
        int number = method01(-10,Math::abs);
        System.out.println(number);
    }
}

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

@FunctionalInterface
public interface MethodCite1 {
    public abstract void newMethod();
}
public class MethodObj {
    public void method01() {
        System.out.println("我是父类");
    }
}
public class SecondClass extends MethodObj{
    public void method01() {
        System.out.println("我是子类");
    }

    public void method02(MethodCite1 mc1) {
        mc1.newMethod();
    }

    public void show() {
        /*method02(()->{
            MethodObj meOb = new MethodObj();
            meOb.method01();
        });*/
        /*method02(()->{
            super.method01();
        });*/
        method02(super::method01);
    }

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

通过this引用本类的成员方法

@FunctionalInterface
public interface MethodCite1 {
    public abstract void newMethod();
}
public class SecondClass{
    public void method01() {
        System.out.println("我是子类");
    }

    public void method02(MethodCite1 mc1) {
        mc1.newMethod();
    }

    public void show() {
        /*method02(()->{
            this.method01();
        });*/
        method02(this::method01);
    }

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

类的构造器引用

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
@FunctionalInterface
public interface NewInterface {
    Person newPer(String name);
}
public class NewClass {
    public static void personBuild(String name, NewInterface newIn) {
        Person per = newIn.newPer(name);
        System.out.println(per.getName());
    }

    public static void main(String[] args) {
        /*personBuild("小新",(name)->{
            return new Person(name);
        });*/
        personBuild("小新",Person::new);
    }
}

数组的构造器引用

@FunctionalInterface
public interface NewArr {
    int[] arrBuilder(int length);
}
public class TestDemo {
    public static int[] method(int length, NewArr nArr) {
        return nArr.arrBuilder(length);
    }

    public static void main(String[] args) {
        /*int[] ints = method(10,(int length)->{
            return new int[length];
        });*/
        int[] ints = method(10,int[]::new);
        int length = ints.length;
        System.out.println(length);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要将数据转换成pandas的DataFrame格式,代码如下: ```python import pandas as pd data = {'日期/项目(A厂)': ['2021.1.1', '2021.1.2', '2021.1.3', '2021.1.4', '2021.1.5', '2021.1.6', '2021.1.7', '2021.1.8', '2021.1.9', '2021.1.10', '2021.1.11', '2021.1.12', '2021.1.13', '2021.1.14', '2021.1.15', '2021.1.16', '2021.1.17', '2021.1.18', '2021.1.19', '2021.1.20', '2021.1.21', '2021.1.22', '2021.1.23', '2021.1.24', '2021.1.25', '2021.1.26', '2021.1.27', '2021.1.28', '2021.1.29', '2021.1.30', '2021.1.31'], '进水': [149, 164, 86, 164, 146, 136, 93, 96, 90, 134, 141, None, None, None, 138, 138, 161, None, None, None, None, None, None, None, None, None, 114, 107, 121, None, None], 'COD': [20.1, 10.1, 37.1, 16.4, 10.9, 18.7, 17.2, 17.1, 18.5, 23.8, 17.7, 15.6, 11.0, 19.5, 18.5, 15.2, 16.5, 16.3, 17.3, 29.5, 20.7, 19.5, 18.9, 12.0, 23.9, 11.7, 10.6, 11.1, 14.2, 10.6, 12.5], '氨氮': [3.54, 0.65, 1.92, 1.44, 0.84, 1.59, 1.15, 1.61, 1.42, 2.46, 2.50, 1.48, 1.04, 3.55, 1.60, 1.82, 2.60, 2.10, 1.54, 3.54, 2.67, 3.25, 2.12, 2.38, 2.34, 1.51, 1.58, 1.31, 1.66, 1.26, 1.71], '总磷': [30.7, 20.1, 44.1, 21.5, 18.4, 29.7, 23.5, 24.2, 26.9, 31.7, 28.3, None, None, 24.0, 26.9, 27.8, 20.5, 27.9, 31.8, 37.8, 24.9, 29.3, None, 23.4, 23.5, 12.4, 27.9, 19.3, 17.6, 19.5, 15.4]} df = pd.DataFrame(data) ``` 接下来,我们可以使用matplotlib库进行数据可视化,这里我选择绘制折线图。代码如下: ```python import matplotlib.pyplot as plt # 设置图形大小 plt.figure(figsize=(10, 6)) # 绘制折线图 plt.plot(df['日期/项目(A厂)'], df['进水'], label='进水') plt.plot(df['日期/项目(A厂)'], df['COD'], label='COD') plt.plot(df['日期/项目(A厂)'], df['氨氮'], label='氨氮') plt.plot(df['日期/项目(A厂)'], df['总磷'], label='总磷') # 添加标题和标签 plt.title('A厂水质监测', fontsize=16) plt.xlabel('日期', fontsize=12) plt.ylabel('含量', fontsize=12) # 添加图例 plt.legend() # 显示图形 plt.show() ``` 运行上述代码,即可得到一张含有4条曲线的折线图,用于展示A厂水质监测数据的趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值