List的定制排序 包括使用lambda表达式来实现的方法
1.先实现Comparator的接口 重写compare方法 根据比较大小来返回数值:
比如:(Integer o1 - Integer o2);
return 1 表示o1>o2;
return -1 表示o1<o2;
return 0 表示 o1 = o2;
因此可以根据这个返回值来设定TreeSet里面的元素升序或者降序排列 ,下面演示的是实现接口并重写的方式来定制排序:
@Override
public int compare(Object o1, Object o2) { if(o1 instanceof People & o2 instanceof People){
People p1 = (People) o1;
People p2 = (People) o2;
if(p1.getAge()>p2.getAge()){
return -1;
}else if(p1.getAge()<p2.getAge()){
return 1;
}
} return 0;
} };
List<Integer> li = new ArrayList<Integer>(); li.add(7);
li.add(0);
li.add(3); li.sort(new Comparator<Integer>() { @Override
public int compare(Integer o1, Integer o2) { Integer i1 = o1;
Integer i2 = o2;
if(i1>i2) {
return 1; }else if(i1<i2) {
return -1;
} return 0;
} });
下面是用lambda表达式的方式来定制排序:
li.sort((o1,o2)->(o2 - o1 ) ); System.out.println(li);
List的定制排序 包括使用lambda表达式来实现的方法的更多相关文章
- 定制操作(传递函数或lambda表达式)
很多算法都会比较输入序列中的元素.默认情况下,这类算法使用元素类型的<或==运算符完成比较.标准库还为这些算法定义了额外的版本,允许我们提供自己定义的操作来代替默认运算符. 例如,sort算法默 ...
- java8之lambda表达式(2)-方法引用
方法引用使用的地方也是在函数式接口,使用方法引用可以使代码更加简单和便捷 在如下代码中 根据List中字符串长度排序的代码可以写成如下: public static void test1_() { L ...
- C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...
- .net学习笔记---lambda表达式(自执行方法)
http://www.cnblogs.com/jesse2013/p/happylambda.html#b034 lambda表达式 http://www.cnblogs.com/OceanEyes/ ...
- java8函数式接口详解、函数接口详解、lambda表达式匿名函数、方法引用使用含义、函数式接口实例、如何定义函数式接口
函数式接口详细定义 函数式接口只有一个抽象方法 由于default方法有一个实现,所以他们不是抽象的. 如果一个接口定义了一个抽象方法,而他恰好覆盖了Object的public方法,仍旧不算做接口的抽 ...
- lambda 表达式定制操作
泛型算法中的定制操作 许多算法都会比较输入序列中的元素以达到排序的效果,通过定制比较操作,可以控制算法按照编程者的意图工作. 普通排序算法: template<class RandomItera ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- 十二、C# 委托与Lambda表达式(匿名方法的另一种写法)
委托与Lambda表达式 1.委托概述 2.匿名方法 3.语句Lambda 4.表达式Lambda 5.表达式树 一.委托概述 相当于C++当中的方法指针,在C#中使用delegate 委托来 ...
随机推荐
- Linux 基础教程 31-tcpdump命令-3
经过前面的学习,tcpdump的用法相信应该都掌握了,今天我们来学习对tcpdump输出内容的学习和了解.我们以第一个示例进行讲解如下所示: IP协议包分析 [root@localhost ~ ...
- Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序
坑爹的System.Data.SQLite. 先给出下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki ...
- [leetcode] 8. Maximum Depth of Binary Tree
可能是因为我是按难度顺序刷的原因,这个其实在之前的几道题里面已经写过了.题目如下: Given a binary tree, find its maximum depth. The maximum d ...
- 随笔-未整理-linux下流量查看
nethogs: 按进程查看流量占用 iptraf: 按连接/端口查看流量 ifstat: 按设备查看流量 ethtool: 诊断工具 tcpdump: 抓包工具 ss: 连接查看工具 其他: dst ...
- [LeetCode 题解]: Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- 在 Docker 上运行一个 RESTful 风格的微服务
tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...
- c# 检查报错详细
catch (DbEntityValidationException error) { string test = string.Empty; foreach (var validationError ...
- asp.net MVC设计模式中使用iTextSharp实现html字符串生成PDF文件
因个人需求,需要将html格式转换成PDF并加上水印图片.于是乎第一次接触这种需求的小菜鸟博主我,在某度搜索引擎上不断的查阅关键字资料.踩坑,终于有了一个相应的解决方案.以下是解决步骤,记录下来方便以 ...
- C#用 catch 捕获异类的常用类型
C#用 catch 捕获异类的常用类型 最近在书上刚刚学到了try和catch用法,然后网上找了下常用的,自己存在这里方便自己查找 Exception 类 描述 SystemException 其他 ...
- ES6——Class的继承
class 的继承和使用. 子类继承父类,使用extends关键字. 为父类知道那个静态方法,使用 static方法名字super: 在构造函数中,可以当一个函数来使用,相当于调用父类的构造函数. 在 ...