java:Comparator比较器
/*Comparator是java.util包里的一个接口,使用时应该实现导入相应的包,
*再写一个实现了Comparator接口的类,并复写int compare(Object o)方法,
*写出你的判断语句(例如:以下代码是按照年龄的递增顺序排序,年龄相同则按照工资的数目递增排序)
*把这个类添加到Arrays.sort()或Collections.sort()中(例如:定义一个list集合,用来存放对象,可以这样写:Collections.sort(list,new 实现类();))
*/
package test;
import java.util.*;
public class ComparaUser {
private String name;
private int age;
private double salary;
public ComparaUser(){}
public ComparaUser(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;
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
/*定义一个list集合,存放ComparaUser类型,
使用Array的静态方法asList(T....a)进行添加*/
List<ComparaUser> list = new ArrayList<ComparaUser>(Arrays.asList(
new ComparaUser("张三",24,200.0),
new ComparaUser("李四",28,233.1),
new ComparaUser("王二",25,500.3),new ComparaUser("麻五",24,300.5)));
Collections.sort(list,new Comp());
for(ComparaUser user :list){
System.out.println(user.getName()+" "+user.getAge()+" "+user.getSalary());
}
}
}
class Comp implements Comparator{
//复写Comparator的compara接口
@Override
public int compare(Object o1,Object o2){
ComparaUser user1 = (ComparaUser)o1;/*类型转换,转换成我们所比较的对象*/
ComparaUser user2 = (ComparaUser)o2;
/*按年龄排序,如果第一个user1的年龄大于user2的年龄,则返回 1 (按照升序排列)
小于返回 -1 降序排列 ; 如果相等,则按照工资再比较(参考年龄的比较方式)
*/
if(user1.getAge() > user2.getAge())
return 1;
else if(user1.getAge() < user2.getAge())
return -1;
else {
if(user1.getSalary() > user2.getSalary())
return 1;
else
return -1;
}
}
}
java:Comparator比较器的更多相关文章
- java Comparator比较器排序法
注意:排序的字段不为空,否则抛出空指针异常! 第一步:先编写一个比较器类 如下: 第二步:此集合的对象 EO 必须重写 此equals 方法 如图: 第三步:调用使用此比较器 如图:
- java.util下有一个Comparator(比较器)
java.util下有一个Comparator(比较器) 它拥有compare(),用来比较两个方法. 要生成比较器,则用Sort中Sort(List,List(Compate)) 第二种方法更灵活, ...
- Java的比较器Comparable与Comparator
在Java中有两个比较器:Comparable.Comparator 对于Integer.Double等等类型,可以直接对他们进行比较,因为已经实现了比较的方式,然而在平时常常会面临需要对集合进行排序 ...
- JAVA Comparator 接口排序用法
java的比较器有两类,分别是Comparable接口和Comparator接口. 在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口. 让需要进行排序的对象实现Comp ...
- Comparable比较器和Comparator比较器
1.Comparable比较器 在Arrays类中存在sort()排序方法,此方法可以直接对对象数组进行排序. public static void sort(Object[] a 根据元素的自然顺序 ...
- Comparator比较器
Comparator比较器 简介 为什么写? comparator 是javase中的接口,位于java.util包下,该接口抽象度极高,有必要掌握该接口的使用 大多数文章告诉大家comparator ...
- Java原来如此-比较器(Comparable、Comparator)
有时候需要对Collection或者不为单一数字的Array进行比较,有两种方法,1是实现Comparable接口,2是实现Comparator接口. 1.ComParable接口 Comparabl ...
- Java基础--比较器Comparator
Comparable接口和Comparator接口都是用来定义集合中的排序的,只是Comparable是在集合内部定义排序的实现,Comparator是在集合外部排序的实现. Comparable 的 ...
- Java 之 比较器( Comparator接口与 Comparable 接口)
一.定制排序:java.util.Comparator 接口 强行对某个对象 collection 进行整体排序 的比较函数.可以将 Comparator 传递给 sort 方法(如 Collecti ...
随机推荐
- elasticsearch使用river同步mysql数据
====== mysql的river介绍====== - 什么是river?river代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法.它是以插件方式存在的一个e ...
- [SinGuLaRiTy] 数论基础
[SinGuLaRiTy-1004] Copyright (c) SinGuLaRiTy 2017 . All Rights Reserved. 整除: 设a,b为整数,且a不为0,如果存在一个整数q ...
- Linux简介与厂商版本上
Linux简介与厂商版本 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 1. Linux简介 Linux可以有狭义和广义两种 ...
- GitLab 客户端添加SSH KEY
一.生成公钥 先查看系统用户目录下是否有 .ssh 文件夹,如果有的话,那说明你之前已经生成过公钥,则可以跳过生成公钥. 运行下面的命令生成一个密钥: ssh-keygen -t rsa -C &qu ...
- AngularJS1.X学习笔记6-控制器和作用域
经过一番艰苦卓绝的鏖战,我终于来到了控制器和作用域部分.控制器作为MVC的C,其重要性不可谓不重要:作用域决定了你可以拿到哪些东西,亦是分外重要.现在就来学习一下两个东西.去看看$apply,$wat ...
- 使用express创建新应用的骨架
通过应用生成器工具 express 可以快速创建一个应用的骨架. 通过如下命令安装: $ npm install express-generator -g -h 选项可以列出所有可用的命令行选项: $ ...
- 04 Feasibility of Learning
机器学习是设计算法A,在假设集合H里,根据给定数据集D,选出与实际模式f最为相近的假设g(g可能与f相同,也可能不同). 那什么情况下学习是可行的?即保证g和f是相似的. 1.数据集内的表现g约等于f ...
- RabbitMQ-从基础到实战(6)— 与Spring集成
0.目录 RabbitMQ-从基础到实战(1)- Hello RabbitMQ RabbitMQ-从基础到实战(2)- 防止消息丢失 RabbitMQ-从基础到实战(3)- 消息的交换(上) Rabb ...
- 使用WebView监控网页加载状况,PerformanceMonitor,WebViewClient生命周期
原理:WebView加载Url完成后,注入js脚本,脚本代码使用W3C的PerformanceTimingAPI, 往js脚本传入一个Android对象(代码中为AndroidObject),在js脚 ...
- html静态页面实现微信分享思路
微信分享网页的时候,希望分享出来的链接是标题+描述+缩略图,微信开发代码示例里已提供了方法,但只适用于动态页面.由于dedecms是生成了静态文件,其实我想使用ajax获取jssdk参数也能也能实现微 ...