1求数组元素的最大值
使用supplier接口作为方法参数类型,通过lambda表达式求出int数组中的最大值
package com.yzy.java8; import java.util.Arrays; import java.util.function.Supplier; /** * @className Test1.java * @author yangsir * @version V1.0 * @date 2019年8月16日-下午7:03:52 * @description 1求数组元素的最大值 使用supplier接口作为方法参数类型,通过lambda表达式求出int数组中的最大值 */ public class Test1 { public static void main(String[] args) { int[] n = { 1, 34, 5, 56, 67 }; Arrays.sort(n);// 使用工具类对数组进行排序 Supplier<Integer> sup = () -> n[n.length - 1];// 使用lambda表达式,输出最后一个元素,Lambda表达式必须实现接口中的抽象方法,所以不传参数 System.out.println(getMax(sup)); } public static int getMax(Supplier<Integer> sup) { return sup.get();// 直接返回supplier里面的get方法来放回值 } }
2.消费型接口Person的输出姓名
public class Person { private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
package com.yzy.java8; import java.util.function.Consumer; /** * @className Test2.java * @author yangsir * @version V1.0 * @date 2019年8月16日-下午7:11:06 * @description 消费型接口Person的输出姓名 */ public class Test2 { public static void main(String[] args) { Person p = new Person("张三", 23);// 创建Person对象 Consumer<Person> con = (x) -> System.out.println(x.getName());// 使用Consumer消费者接口和Lambda,Lambda表达式必须实现接口中的抽象方法,所以传一个参数 getName(con, p); } public static void getName(Consumer<Person> con, Person p) { con.accept(p);// 直接调用用Consumer中的accept方法来接收即可 } }
3.集合中的元素按年龄升,当年龄相等按姓名降。然后输出list。(lambda实现)
自查API:Collections.sort(List list, Comparator<? super T> c){
}
package com.yzy.java8; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @className Test3.java * @author yangsir * @version V1.0 * @date 2019年8月16日-下午7:20:57 * @description 集合中的元素按年龄升,当年龄相等按姓名降。然后输出list。(lambda实现) */ public class Test3 { public static void main(String[] args) { // 创建一个集合然后添加元素 List<Person> list = new ArrayList<Person>(); list.add(new Person("a", 23)); list.add(new Person("c", 24)); list.add(new Person("e", 23)); list.add(new Person("d", 23)); // 查看Collections的API可知上面说 列表中的所有元素必须实现Comparable接口 Collections.sort(list, (x, y) -> {// 在Lambda表达式中传入两个比较的元素并实现 if (x.getAge() != y.getAge()) return x.getAge() - y.getAge(); else return x.getName().compareTo(y.getName()); }); System.out.println(list); } }
4.生成随机数
List list = getNum(5, )调用
生成随机数的方法
public List getNum(int num ,Supplier su){
}
package com.yzy.java8; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.function.Supplier; /** * @className Test4.java * @author yangsir * @version V1.0 * @date 2019年8月16日-下午7:34:35 * @description List<Integer> list = getNum(5, )调用 生成随机数的方法 public List<Integer> * getNum(int num ,Supplier<Integer> su){ * * } */ public class Test4 { public static void main(String[] args) { Supplier<Integer> su = () -> new Random().nextInt(100);// 因为Supplier只有一个构造方法,Lambda表达式必须实现接口中的抽象方法,所以不传参数 List<Integer> list = getNum(5, su);// 调用 System.out.println(list); } public static List<Integer> getNum(int num, Supplier<Integer> su) {// 照题目要求定义方法 List<Integer> list = new ArrayList<Integer>();// 创建一个集合作为返回值 for (int i = 0; i < num; i++) {// 循环num次 list.add(su.get());// 每次都添加su.get()里面的元素 } return list; } }