package com.zs.boot.controller;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class TestLambda3 {
public class Employee{
private String name;
private int age;
private double salary;
public Employee() {
}
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
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;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
List<Employee> employees = Arrays.asList(
new Employee("刘德华",48,8000),
new Employee("张学友",28,8500),
new Employee("黎明",45,6500),
new Employee("郭富城",51,5500));
@Test
public void test1(){
Collections.sort(employees,(e1,e2) -> {
if(e1.getAge() == e2.getAge()){
return e1.getName().compareTo(e2.getName());
}else{
return Integer.compare(e1.getAge(),e2.getAge());
//从大到小排序return -Integer.compare(e1.getAge(),e2.getAge());
}
});
for (Employee emp:employees) {
System.out.println(emp);
}
}
//--------------------------------------------------------
@FunctionalInterface
public interface MyFunction {
public String getValue(String str);
}
public String strHandler(String str, MyFunction mf){
return mf.getValue(str);
}
@Test
public void test2(){
String trimStr = strHandler("\t\t\t 呼呼呼呼呼 ", (str) -> str.trim());
System.out.println(trimStr);
String upper = strHandler("abcdef", (str) -> str.toUpperCase());
System.out.println(upper);
String newStr = strHandler("哈哈哈哈", (str) -> str.substring(2, 5));
System.out.println(newStr);
}
//--------------------------------------------------------
public interface MyFunction2<T, R> {
public R getValue(T t1, T t2);
}
public void op(Long l1, Long l2, MyFunction2<Long, Long> mf){
System.out.println(mf.getValue(l1, l2));
}
@Test
public void test3(){
op(100L, 200L, (x, y) -> x + y);
op(100L, 200L, (x, y) -> x * y);
}
}
分开不在一个类中写:
@FunctionalInterface
public interface MyFunction {
public abstract String getValue2(String str);
}
public class strHandler{
public String getValue(String str,MyFunction mf){
return mf.getValue2(str);
}
}
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
String uc = new strHandler().getValue("abcdef", (str) -> str.toUpperCase());
System.out.println(uc);//ABCDEF
}
}