java基础——Collections.sort的两种用法

[size=large][b]Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:[/b][/size]


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);
}


[b] 首先使用基本类型(此处使用Integer)来演示第一个方法:[/b]

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;
}
});


[b] 接下来看看自定义类的排序:[/b]


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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值