JAVA黑马程序员day10--lambda表达式

JAVA黑马程序员day10--lambda表达式_第1张图片

JAVA黑马程序员day10--lambda表达式_第2张图片
练习1
JAVA黑马程序员day10--lambda表达式_第3张图片
GirlFriend javaBean标准类

package day10_lambda;

public class GirlFriend {
    private String name;
    private int age;
    private double high;


    public GirlFriend() {
    }

    public GirlFriend(String name, int age, double high) {
        this.name = name;
        this.age = age;
        this.high = high;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return high
     */
    public double getHigh() {
        return high;
    }

    /**
     * 设置
     * @param high
     */
    public void setHigh(double high) {
        this.high = high;
    }

    public String toString() {
        return "GirlFriend{name = " + name + ", age = " + age + ", high = " + high + "}";
    }
}

test类

package day10_lambda;
//lambda表达式练习

import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        //定义三个女朋友对象
        GirlFriend girl1=new GirlFriend("ad",18,1.67);
        GirlFriend girl2=new GirlFriend("ba",18,1.67);
        GirlFriend girl3=new GirlFriend("xiaosdong",18,1.80);

        //定义数组存储女朋友信息
        GirlFriend[] arr1={girl1,girl2,girl3};//对象数组

        //利用Arrays中的sort方法进行排序
        //匿名内部类,lambda表达式两种方式
        //匿名内部类方式:
//        Arrays.sort(arr1, new Comparator() {
//            @Override
//            public int compare(GirlFriend o1, GirlFriend o2) {
//                double temp=o1.getAge()-o2.getAge();
//                temp = temp==0?o1.getHigh()-o2.getHigh():temp;
//                temp = temp==0?o1.getName().compareTo(o2.getName()):temp;
//
//                if(temp>0){
//                    return 1;
//                }else if(temp<0){
//                    return -1;
//                }else{
//                    return 0;
//                }
//            }
//        });

        //lambda表达式写法
        //()->{}
        //():对应着抽象方法的形参
        //{}:方法体
        Arrays.sort(arr1, (o1, o2)->{
                //按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序
                double temp=o1.getAge()-o2.getAge();
                temp = temp==0?o1.getHigh()-o2.getHigh():temp;
                temp = temp==0?o1.getName().compareTo(o2.getName()):temp;

                if(temp>0){
                    return 1;
                }else if(temp<0){
                    return -1;
                }else{
                    return 0;
                }
            }
        );

        System.out.println(Arrays.toString(arr1));
    }
}

练习2:斐波那切数列问题
在这里插入图片描述

package day10_lambda;

//求解斐波那切数列
public class test2 {
    public static void main(String[] args) {
//        int[] arr=new int[12];
//        arr[0]=1;
//        arr[1]=1;
//
//        for (int i = 2; i < arr.length; i++) {
//            arr[i]=arr[i-1]+arr[i-2];
//        }

        System.out.println(getsum(12));
    }

    //递归求解
    public static int getsum(int month){
            if(month==1||month==2){
                return 1;
            }else {
                return getsum(month-1)+getsum(month-2);
            }
    }
}

练习3:猴子吃桃问题
JAVA黑马程序员day10--lambda表达式_第4张图片

package day10_lambda;
//猴子吃桃子问题
public class test3 {
    public static void main(String[] args) {
        System.out.println(getSum(1));
    }
    public static int getSum(int day){
        //当前时间错误
        if(day>11||day<0){
            System.out.println("天数错误");
            return -1;
        }
        //递归的出口
        if(day==10){
            return 1;
        }
        //书写规律
        //每一天的数量都是后一天的数量加1,乘以2
        else{
            return (getSum(day+1)+1)*2;
        }
    }
}

练习4:爬楼梯
JAVA黑马程序员day10--lambda表达式_第5张图片

package day10_lambda;
//爬楼梯问题

public class test4 {
    public static void main(String[] args) {
        System.out.println(getCount(20));
    }
    public static int getCount(int n){
        if(n==1){
            return 1;
        }
        if(n==2){
            return 2;
        }
        else{
            return getCount(n-1)+getCount(n-2);
        }

    }
}

你可能感兴趣的:(java,java,开发语言)