练习1
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<GirlFriend>() {
// @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:猴子吃桃问题
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:爬楼梯
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);
}
}
}