实现Comparator 对List<?>进行排序
首选需要有个Entity类 ,里面有属性有方法
package demo; public class Entity {
private String empNo ;
private String empName ;
private float sal ; public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public float getSal() {
return sal;
}
public void setSal(float sal) {
this.sal = sal;
} public Entity(String empNo,String empName,float sal){
this.empNo = empNo ;
this.empName = empName ;
this.sal = sal ;
} }
现在我想对 empName 这个属性进行排序
此时需要MyComparator 实现Comparator<Object>
package demo; import java.util.Comparator; public class MyComparator implements Comparator<Object>{ public int compare(Object o1,Object o2) {
Entity s1 = (Entity) o1;
Entity s2 = (Entity) o2;
// return (int) (s1.getSal() - s2.getSal()); // 按Id排
return s1.getEmpName().compareTo(s2.getEmpName()); // 按姓名排
}
}
测试类如下
package demo; import java.util.ArrayList;
import java.util.Collections; public class test {
public static void main(String[] args) {
ArrayList<Entity> list = new ArrayList<Entity>();
Entity e1 = new Entity(null, null, 0);
Entity e2 = new Entity(null, null, 0);
Entity e3 = new Entity(null, null, 0);
Entity e4 = new Entity(null, null, 0);
e1.setEmpName("TY2014000002");
String s1= e1.getEmpName();
s1 = s1.substring(6);
System.out.println(s1+"+++++++++");
e2.setEmpName("TY2016000009");
e3.setEmpName("TY2016000003");
e4.setEmpName("TY2014000001");
list.add(e1);
list.add(e2);
list.add(e3);
list.add(e4);
for(int i=0;i<list.size();i++){
Entity emp = (Entity)list.get(i) ;
System.out.println(emp.getEmpName());
}
System.out.println("-------------------");
MyComparator mc = new MyComparator() ;
Collections.sort(list, mc) ;
for(int i=0;i<list.size();i++){
Entity emp = (Entity)list.get(i) ;
System.out.println(emp.getEmpName());
}
}
}
实现Comparator 对List<?>进行排序的更多相关文章
- 十五、Collections.sort(<T>, new Comparator<T>() {})针对字符串排序
1.排序对象全是字母组成,可以根据ASCII编码表排序 package com.abcd; public class Person{ private String name; private int ...
- JAVA 使用Comparator接口实现自定义排序
1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...
- Comparator进行List集合排序
对数据库中查询到的结果进行排序,一般开发中,实体类是没有实现Comparable接口的,所以不能实现compareTo()方法进行排序, 只能用Comparator去进行排序,只需要在带排序的集合中加 ...
- 十四、new Comparator<T>实现多重排序结果
1.编写实现类 package com.abcd; public class Person{ private String name; private int age; private int sal ...
- Comparator和Comparable在排序中的应用
http://blog.csdn.net/iisgirl/article/details/7269833
- Java8:Lambda表达式增强版Comparator和排序
1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...
- Java ArrayList中对象的排序 (Comparable VS Comparator)
我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...
- JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序
大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...
- 我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理
一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时 ...
随机推荐
- python使用pip安装库时出现timeout或者速度慢
豆瓣:https://pypi.doubanio.com/simple/ pip3 install -i https://pypi.doubanio.com/simple/ selenium easy ...
- linux编译C
1. 编译单个源文件 为了进行测试,你可以创建"Hello World"程序: #include #include int main(int argc, char **argv) ...
- Laradock 如何通过 ssh 方式连接到 workspace
用 docker-compose exec workspace bash 方式可以进入容器,但是还是在 xshell 终端连接比较方便. 在网上也没找到方法,其实可以通过密钥的方式连接.记录一下仅 ...
- C 语言入门---第六章 C语言数组
数组就是一些列具有相同类型的数据的集合,这些数据在内存中一次挨着存放,彼此之间没有缝隙. 我们可以将二维数组看作一个Excel表格,有行有列,length1 表示行数,length2 表示列数,要在二 ...
- HTML相关知识点(3)
文档流: 浮动:用于布局 给三个浮动的盒子加上一个父元素并设置宽高,以免影响其他的盒子和内容 margin:0 auto;居中 在盒子里插入图片: 1.为父元素设置宽高,给图片设置宽100%,图片会充 ...
- LinkedList学习:API调用、栈、队列实现
参考的博客 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 如果你想详细的区了解容器知识以及本文讲的LinkedList,我推荐你去看这篇博客和这个做个的容器系列 Lin ...
- Shiro登录身份认证(从SecurityUtils.getSubject().login(token))到Realm的doGetAuthenticationInfo
ssm框架下,controller接收到登录请求交给Service并开始处理流程: 1.Service的login方法: @Service public class SysUserServiceImp ...
- USACO[19-20]Dec银组题解
1,MooBuzz 这题其实是道数学题. 我们先找找符合要求的数:1,2,4,7,8,11,13,14…… 我们发现再往后找都是这8个数中的一个加15k如:16……19……29…… 找规律发现k=n/ ...
- 第二单元总结:基于synchronize锁的简单多线程设计
单元统一的多线程设计策略 类的设计 电梯 每部电梯为一个线程. 电梯从调度器接收原子指令,知晓自己的状态(内部的人/服务的人.运行方向.所在楼层) 原子指令包括且仅包括: 向上走一层 / 向下走一层 ...
- eclipse springboot运行helloworld错误: 找不到或无法加载主类 xxx.xxx.xxx
这个错误,在网上搜找了好久,说是什么jar包冲突,什么环境配置,我经过验证均是正确的,javac java java -version 都没问题,环境变量也OK,各种解释均没有能够解决我的问题,最后好 ...