再谈Comparator-使用lambda表达式
来源:互联网 发布:芬尼根的守灵夜 知乎 编辑:程序博客网 时间:2024/06/05 10:07
关于Comparable和Comparator 的区别以及作用:
1. Java 中 Comparable 和 Comparator 比较 - 如果天空不死 - 博客园
2. 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法) - Luc - 博客园
正文
先写一个Person类,主要有address跟name两个成员属性以及他们的getter()方法,最后补刀重写toString()方法
public class Person { private String address; private String name; public Person(String firstName, String lastName) { this.address = firstName; this.name = lastName; } public String getAddress() { return address; } public String getName() { return name; } @Override public String toString() { return getClass().getSimpleName()+"{" + "address='" + address + '\'' + ", name='" + name + '\'' + '}'; }}
以前
- 以前写比较排序的时候,总需要写一大堆代码,比如下面:
public class TestCh06 { public static void main(String... args) throws CloneNotSupportedException { //定义一个Person类数组 Person[] arr = {new Person("wo", "2722"), new Person("uj", "2829"), new Person("dh", "272"), new Person("us", "1"), new Person("jaka", "881711")}; LenComparator lc = new LenComparator(); //排序 Arrays.sort(arr, lc); System.out.println(Arrays.toString(arr)); }}/** * 按照名字长度来排序的比较器-->主要用于String类型的数组 */class LenComparator implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return Integer.compare(o1.getName().length(), o2.getName().length()); }}
现在
- 如今Java8SE出来了很久了,如果还使用上面的代码写作确实有点缺优雅,因为Comparator接口包含了很多方便的静态方法类创建比较器(这些方法可以用于lambda表达式或者方法引用)
//按照名字进行排序 Arrays.sort(arr, Comparator.comparing(Person::getName)); //按照名字长度进行排序 Arrays.sort(arr,Comparator.comparing(Person::getName,(s,t)->Integer.compare(s.length(),t.length()))); Arrays.sort(arr,Comparator.comparingInt(p->p.getName().length())); //先按照名字进行排序,如果名字相同,再按照地址比较 Arrays.sort(arr,Comparator.comparing(Person::getName).thenComparing(Person::getAddress));
温馨提示:其实在平常用的比较也不多,只是在需要的时候才用到,更希望大家可以掌握一些lambda表达式更好
————-我是低调的分割线————————–
如果对你有帮助,可以点击“推荐”哦`(*∩_∩*)′
PS:可爱的动画感谢博客园的萌小Q博主,其实还是蛮希望跟她成为好友的,她做的博客内容写的很好
阅读全文
0 0
- 再谈Comparator-使用lambda表达式
- java 8 comparator 使用lambda 表达式
- java Lambda表达式Comparator和sort
- Java8:Lambda表达式增强版Comparator和排序
- Java8:Lambda表达式增强版Comparator和排序
- 委托使用lambda表达式
- Lambda表达式的使用
- Lambda表达式委托使用
- 使用 lambda 表达式
- lambda表达式的使用
- Lambda表达式使用汇总
- lambda表达式的使用
- lambda表达式使用
- python lambda 表达式使用
- Lambda表达式的使用
- Lambda表达式的使用
- lambda表达式使用案例
- 使用Lambda 表达式
- LRC纵向冗余校验
- hive仓库和关系型数据库的对比
- 考研
- Win10 64bit下安装GPU版Tensorflow+Keras
- c++远征之模板篇——函数模板、类模板
- 再谈Comparator-使用lambda表达式
- Java实现-数字组合1
- poj2081
- Skill: MacOS Sierra 删除MobileBackups文件夹,扩大磁盘空间
- 唯快不破:Web 应用的 13 个优化步骤
- 《Linux的脚本之shell_第一个脚本当然还是helloWorld比较好》
- 23种设计模式----创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
- 2017美团点评编程大赛资格赛 --- 音乐研究
- 帆软解决方案网址集合(我只是个搬运工)