首选需要有个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<?>进行排序的更多相关文章

  1. 十五、Collections.sort(<T>, new Comparator<T>() {})针对字符串排序

    1.排序对象全是字母组成,可以根据ASCII编码表排序 package com.abcd; public class Person{ private String name; private int ...

  2. JAVA 使用Comparator接口实现自定义排序

    1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...

  3. Comparator进行List集合排序

    对数据库中查询到的结果进行排序,一般开发中,实体类是没有实现Comparable接口的,所以不能实现compareTo()方法进行排序, 只能用Comparator去进行排序,只需要在带排序的集合中加 ...

  4. 十四、new Comparator<T>实现多重排序结果

    1.编写实现类 package com.abcd; public class Person{ private String name; private int age; private int sal ...

  5. Comparator和Comparable在排序中的应用

    http://blog.csdn.net/iisgirl/article/details/7269833

  6. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  7. Java ArrayList中对象的排序 (Comparable VS Comparator)

    我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...

  8. JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序

    大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...

  9. 我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理

    一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时 ...

随机推荐

  1. No module named 'widgets'

    https://blog.csdn.net/heatdeath/article/details/70313645 适配python3的. https://github.com/twz915/Djang ...

  2. BUU re xor

    从13行和18行的0x21(c规定十六进制必须用0x**表示)可以知道这个字符串就是33个字符 shift+e来提取出数组中的字符: 设这个数组是global数组 global[] = { 102, ...

  3. Immediate Decodability[UVA644](Trie入门)

    传送门 题意:给出一些数字串,判断是否有一个数字串是另一个串的前缀. 这题真的可以算是Trie树的一道模板题了. 先把Trie树建好,建树的时候记录一个sum表示一个节点有多少个串会包含此节点,然后再 ...

  4. 基于IntelliJ IDEA的代码评审插件 Code Review Plugin

    一.阿里规范公约 1.左上角 File -> Settings -> Plugins -> 搜索:Alibaba Java Coding Guidelines,安装插件并重启IDEA ...

  5. JS数据统计表 highcharts.js的运用

    参考地址 http://www.runoob.com/highcharts/highcharts-column-basic.html 1.下载JS文件引入,或者用CDN function getCou ...

  6. for 循环遍历数据动态渲染html

    本案例通过ajax动态获取数据,然后遍历出数据渲染html小心踩坑:因为有时候不注意,渲染页面的时候只能输出最后一个数据所以正确写法为下:如果AJAX数据请求成功的情况下: html <div ...

  7. centos7 bond双网卡

    [root@pay network-scripts]# cat ifcfg-bond0 |grep -v \#TYPE="Ethernet"PROXY_METHOD="n ...

  8. IOS 3种内省方法

    IOS提供了3种内省方法 isKindOfClass 检查当前实例是否为某类及其子类 UIView *b = [UIView new]; //... id a = b; if ([a isMember ...

  9. 基于PIL模块创建验证码图片

    def get_valid_img(request): # 方式2:基于PIL模块创建验证码图片 from PIL import Image, ImageDraw, ImageFont from io ...

  10. C#中的扩展类的理解

    扩展类是一种静态的一种类的调用方法,通过实例化进行调用.利用this进行指正该类,有参数的时候直接在后面追加参数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...