Java进阶——方法应用

引用静态方法

格式 : 类名::静态方法

范例 : Integer::parseInt

练习

集合中有以下数字,要求把他们都变成int类型

“1” “2” “3” “4” “5”

package Java_hm.ff;


import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;

public class demo1 {
    //方法引用 静态方法
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"1","2","3","4","5");
        //常规方法
        list.stream().map(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.parseInt(s);
            }
        }).forEach(s -> System.out.println(s));
        //简化
        list.stream().map(s -> Integer.parseInt(s)).forEach(k-> System.out.println(k));
        
        //引用规则
        /*1、方法需要已经存在
        * 2、方法的参数和返回值与抽象方法的形参和返回值一样
        * 2、方法发功能需要满足条件*/
        list.stream().map(Integer::parseInt).forEach(s-> System.out.println(s));
    }
}

引用成员方法

格式 : 对象::成员方法

1、其他类 : 其他类对象::方法名

2、本类 : this::方法名

3、父类 : super::方法名

练习1:

集合中有一些人的名字,按照要求过滤数据

练习2:

CUI界面中点击事件的方法引用写法

package Java_hm.ff;

import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;

public class Demo2 extends FStringOperation{
        //    应用成员方法
    public void main(String[] args) {
        //创建集合
        ArrayList<String> list = new ArrayList<>();
        //添加数据
        Collections.addAll(list,"张三丰","赵构","张无忌","张蔷","周若蓝");
        //过滤数据
        list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s-> System.out.println(s));

        //改写方法引用
        list.stream().filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {
               return s.startsWith("张")&&s.length()==3;
            }
        }).forEach(s-> System.out.println(s));
        //其他类引用方法
        list.stream().filter(new StringOperation()::stringJudge).forEach(s -> System.out.println(s));
        //本类
        list.stream().filter(Demo2::stringJudge1).forEach(s -> System.out.println(s));
        //父类
        list.stream().filter(super::stringJudge).forEach(s -> System.out.println(s));
    }
    public static boolean stringJudge1(String s){
        return s.startsWith("张")&&s.length()==3;
    }
}
class FStringOperation{
    public boolean stringJudge(String s){
        return s.startsWith("张")&&s.length()==3;
    }
}
class StringOperation{
    public boolean stringJudge(String s){
        return s.startsWith("张")&&s.length()==3;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

续写少年!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值