method reference
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier; public class MethodReferenceTest { public String getString(Supplier<String> supplier) {
return supplier.get() + "test";
} public String getString2(String str, Function<String, String> function) {
return function.apply(str);
} public static void main(String[] args) { MethodReferenceTest methodReferenceTest = new MethodReferenceTest(); System.out.println(methodReferenceTest.getString(String::new));
System.out.println(methodReferenceTest.getString2("hello", String::new)); Student student1 = new Student("zhangsan", 10);
Student student2 = new Student("lisi", 90);
Student student3 = new Student("wangwu", 50);
Student student4 = new Student("zhaoliu", 40); List<Student> students = Arrays.asList(student1, student2, student3, student4); // students.sort((studentParam1, studentParam2) ->
// Student.compareStudentByScore(studentParam1, studentParam2));
// students.forEach(student -> System.out.println(student.getScore()));
//
// System.out.println("-------"); // students.sort(Student::compareStudentByScore);
// students.forEach(student -> System.out.println(student.getScore()));
//
// System.out.println("-------");
//
// students.sort((studentParam1, studentParam2) ->
// Student.compareStudentByName(studentParam1, studentParam2));
// students.forEach(student -> System.out.println(student.getName()));
//
// System.out.println("-------");
//
// students.sort(Student::compareStudentByName);
// students.forEach(student -> System.out.println(student.getName()));
//
// System.out.println("-------");
//
// StudentComparator studentComparator = new StudentComparator();
//
// students.sort((studentParam1, studentParam2) ->
// studentComparator.compareStudentByScore(studentParam1, studentParam2));
// students.forEach(student -> System.out.println(student.getScore())); // System.out.println("-------");
//
// students.sort(studentComparator::compareStudentByScore);
// students.forEach(student -> System.out.println(student.getScore()));
//
// System.out.println("-------");
//
// students.sort((studentParam1, studentParam2) ->
// studentComparator.compareStudentByName(studentParam1, studentParam2));
// students.forEach(student -> System.out.println(student.getName()));
//
// System.out.println("-------");
//
// students.sort(studentComparator::compareStudentByName);
// students.forEach(student -> System.out.println(student.getName()));
//
// System.out.println("-------");
//
// students.sort(Student::compareByScore);
// students.forEach(student -> System.out.println(student.getScore()));
//
// System.out.println("-------");
//
// students.sort(Student::compareByName);
// students.forEach(student -> System.out.println(student.getName()));
//
// System.out.println("-------");
//
List<String> cities = Arrays.asList("qingdao", "chongqing", "tianjin", "shenzhen"); // Collections.sort(cities, (city1, city2) -> city1.compareToIgnoreCase(city2));
// cities.forEach(city -> System.out.println(city)); // System.out.println("-------");
//
// Collections.sort(cities, String::compareToIgnoreCase);
// cities.forEach(System.out::println);
//
// System.out.println("-------");
// }
}
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public static int compareStudentByScore(Student student1, Student student2) {
return student1.getScore() - student2.getScore();
}
public static int compareStudentByName(Student student1, Student student2) {
return student1.getName().compareToIgnoreCase(student2.getName());
}
public int compareByScore(Student student) {
return this.getScore() - student.getScore();
}
public int compareByName(Student student) {
return this.getName().compareToIgnoreCase(student.getName());
}
}
public class StudentComparator {
public int compareStudentByScore(Student student1, Student student2) {
return student1.getScore() - student2.getScore();
}
public int compareStudentByName(Student student1, Student student2) {
return student1.getName().compareToIgnoreCase(student2.getName());
}
}
Lambda can be replaced with method reference。
method reference的更多相关文章
- java中的方法引用(method reference)官方文档总结
2017/7/5 转载写明出处:http://www.cnblogs.com/daren-lin/p/java-method-reference.html 今天要说的是java中的一项新特性,方法引用 ...
- 浅析Java 8新特性Method Reference
什么是方法引用 我们知道了什么是Lambda Expression以及如何使用,那么,Method References又是什么呢?Oracle Java Docs中这样说: They are com ...
- JDK 8 - Method Reference 分析
Java SE 8 在 Java 语言层面上新增了 lambda expression 的功能,使得 Java 具备了函数式语言的能力 - 可以将函数作为方法参数传递,即 code as data. ...
- 方法引用(Method reference)和invokedynamic指令详细分析
方法引用(Method reference)和invokedynamic指令详细分析 invokedynamic是jvm指令集里面最复杂的一条.本文将详细分析invokedynamic指令是如何实现方 ...
- 方法引用(method reference)
目录 方法引用(method reference) 1. 含义 2. 分类 3. 总结 方法引用(method reference) 1. 含义 方法引用实际上是 Lambda 表达式的一种语法糖. ...
- Java中的函数式编程(四)方法引用method reference
写在前面 我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口. 很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类 ...
- JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序
大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...
- java 方法引用(method reference)
it -> it != null等价于Objects::nonNull
- 方法引用(Method reference)和构造器引用(construct reference)
Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用 方法引用语法格式有以下三种: objectName::instanceMethod ClassName::staticMethod C ...
随机推荐
- delphi 指针 认识
delphi 指针分为类型指针和无类型指针: 类型指针分为PChar.PInteger.PString等. 无类型指针Pointer. PPChar/PP...为指针的指针 @和Addr一样,为获取变 ...
- HTML、CSS、JavaScript网页制作从入门到精通 (刘西杰) pdf扫描版彩色版
html.css.JavaScript网页制作从入门到精通中从基础知识开始讲起,如html的基本标记.文字与段落标记.表格标记.超链接标记……同时介绍了目前流行的web标准与css网页布局实例,以及基 ...
- HBase优化实战
本文来自网易云社区. 背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据.对于像Datastream这种数据量巨大.对写入要求非常高,并且 ...
- C# LINQ(8)
回顾之前的代码都是LINQ自行推断类型.其实LINQ在查询的结束是可以动态创建类型. , , , , , , , , , , }; var list = from num in intArray &a ...
- 老程序员解Bug的通用套路
千万不要当程序员面说有bug 对于新手程序员而言,在复杂代码中找BUG是一个难点.下面我们总结下老从程序员解Bug的通用套路,希望对大家有帮助. 1.IDE调试 根据项目特点和语言特点选择一个最合适的 ...
- (获取qq群成员信息,并下载头像,每个群保存一个文件夹)
# 1.获取到自己qq里面所有的群,并且保存每个群里面的群成员信息到mongodb里面# 下载每个群的群成员的头像# 1.抓包,抓到获取自己所有qq群的接口 requests模块 https://qu ...
- 洛谷P1640 [SCOI2010]连续攻击游戏(二分图)
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- rsync入门
rsync是Linux/unix下一个用于远程文件(目录)同步的一个精巧的小工具程序,有很多文章讨论了其功能和实现原理,本文主要就不赘述了. 主要介绍下实践时使用的一些方法和细枝末节留作工作笔记以便日 ...
- javascript中构造器(函数)的__proto__与prototype初探
背景:最近没什么需求,快要闲出屁了,所以重温了一下js的原型,结果大有收获,且偶然看到Snandy大神的<JavaScript中__proto__与prototype的关系> 这篇文章,感 ...
- javascript jquery console调试方法说明
控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息. 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示 ...