lambda表达式方法引用

 

public class test {

  public static void main(String[] args) {
    //存储person对象的列表
    ArrayList<Person> personArrayList = new ArrayList<>();
    personArrayList.add(new Person("文泽稳", 27, "男"));
    personArrayList.add(new Person("王祺", 21, "女"));
    personArrayList.add(new Person("文学才", 58, "男"));
    personArrayList.add(new Person("彭亮容", 60, "女"));
    personArrayList.add(new Person("文娟", 32, "女"));
    personArrayList.add(new Person("文泽芳", 29, "女"));

    //1.匿名内部内的方式
    Collections.sort(personArrayList, new Comparator<Person>() {
      @Override
      public int compare(Person o1, Person o2) {
        return o2.getAge() - o1.getAge();
      }
    });
    System.out.println(personArrayList);

    //2.lambda方式
    Collections.sort(personArrayList, (person1, person2) -> {
      return person2.getAge() - person1.getAge();
    });

    System.out.println(personArrayList);

    //3.静态方法的引用
    Collections.sort(personArrayList, Person::comparByAge);
    System.out.println(personArrayList);

    //4.实例方法的调用
    PersonUtil person = new PersonUtil();
    Collections.sort(personArrayList, person::compareByName);
    System.out.println("文泽稳".hashCode());
    System.out.println("王祺".hashCode());
    System.out.println(personArrayList);

    //5.构造函数方法的调用(依赖函数式接口)
    IPerson iPerson = Person::new;
    iPerson.intitPersom("马军", 31, "男");
    System.out.println(person);
  }
}

@Data
@AllArgsConstructor
@NoArgsConstructor
class Person {

  private String userName;
  private int age;
  private String gendar;

  public static int comparByAge(Person person1, Person person2) {
    return person1.getAge() - person2.getAge();
  }

  @Override
  public String toString() {
    return "Person{" +
        "userName='" + userName + '\'' +
        ", age=" + age +
        ", gendar='" + gendar + '\'' +
        '}';
  }
}

class PersonUtil {

  public int compareByName(Person Person1, Person person2) {
    return Person1.getUserName().hashCode() - person2.getUserName().hashCode();
  }
}

interface IPerson {

  Person intitPersom(String userName, int age, String gendar);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值