java基础——Collections.sort的两种用法
程序员文章站
2022-05-17 11:59:28
...
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:
首先使用基本类型(此处使用Integer)来演示第一个方法:
接下来看看自定义类的排序:
如果直接使用 Collections.sort(empList);需要在Emp类中实现Comparator接口
使用Collections.sort方法的第一种形式实现:
public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); }
public static <T> void sort(List<T> list, Comparator<? super T> c) { list.sort(c); }
首先使用基本类型(此处使用Integer)来演示第一个方法:
static List<Integer> intList = Arrays.asList(2, 3, 1); //正序 Collections.sort(intList); //倒叙 Collections.sort(intList,new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // 返回值为int类型,大于0表示正序,小于0表示逆序 return o2-o1; } });
接下来看看自定义类的排序:
public class Emp{ private int empno; private String ename; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Emp(int empno, String ename) { super(); this.empno = empno; this.ename = ename; } @Override public String toString() { return "empno:\t"+empno+"\tename:\t"+ename; } }
//定义的list static List<Emp> empList; static { Emp emp1 = new Emp(2,"Guan YunChang"); Emp emp2 = new Emp(3,"Zhang Fei"); Emp emp3 = new Emp(1,"Liu Bei"); empList = Arrays.asList(emp1,emp2,emp3); } //实现排序的方法 Collections.sort(empList,new Comparator<Emp>() { @Override public int compare(Emp o1, Emp o2) { /*按员工编号正序排序*/ return o1.getEmpno()-o2.getEmpno(); /*按员工编号逆序排序*/ //return o2.getEmpno()-o1.getEmpno(); /*按员工姓名正序排序*/ //return o1.getEname().compareTo(o2.getEname()); /*按员工姓名逆序排序*/ //return o2.getEname().compareTo(o1.getEname()); } });
如果直接使用 Collections.sort(empList);需要在Emp类中实现Comparator接口
public class Emp implements Comparable<Emp>{ private int empno; private String ename; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Emp(int empno, String ename) { super(); this.empno = empno; this.ename = ename; } @Override public String toString() { return "empno:\t"+empno+"\tename:\t"+ename; } @Override public int compareTo(Emp emp) { /*按员工编号正序排序*/ //return this.getEmpno()-emp.getEmpno(); /*按员工编号逆序排序*/ //return emp.getEmpno()-this.getEmpno(); /*按员工姓名正序排序*/ //return this.getEname().compareTo(emp.getEname()); /*按员工姓名逆序排序*/ return emp.getEname().compareTo(this.getEname()); } }
使用Collections.sort方法的第一种形式实现:
Collections.sort(empList);
上一篇: 5.设计模式之模板模式
下一篇: 14.设计模式之适配器模式
推荐阅读
-
PHP和JAVA的XML-RPC中文问题解决办法_php基础
-
Java Scanner的使用和hasNextXXX()的用法说明
-
浅析Java中Apache BeanUtils和Spring BeanUtils的用法
-
C#控制台基础 list<>初始化的两种方法
-
Js中setTimeout()和setInterval() 何时被调用执行的用法_基础知识
-
Java基础之内部类的实例代码详解
-
实用技巧:PHP中调用Java类的两种方法
-
java基础——方法参数的值传递机制
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
java中讲讲DataInputStream的用法,举例?