Comparable、Comparator、comparaTo、compara 方法的理解

比较规则:

正数:交换两者的位置
0 or 或负数:位置不变,

例,
compara(3,1) 返回2,交换两者位置,即升序。
compara(1,3) 返回-2,位置不变,即降序。

两个工具类的排序方法

Collections.sort():对集合进行排序。
Collections.sort的重载方法
Arrays.sort():对数组进行排序,当比较元素为基本类型时,只能进行升序 ,比较引用类型时可降序。
Arrays.sort()的重载方法
Arrays.sort()排序原理

两个接口

Comparable:一般用于自定义的类如:T,类继承该接口后重写comparaTo(T stu)方法。
Comparato:比较器,一般用于瞬时排序,被类所继承并重写compara(T o1,T o2)方法。
:java为包装类(String,Integer,Double,Float等)定义了compara()方法,可以直接拿来用

两个方法

两个方法都可以用来定义比较规则,通过返回int值确定元素是否交换。(正数交换,非正数不交换)
int comparaTo( T b ):

class myObject implements Comparable<myObject>
{
	
	private int balance;
	
	myObject(int a){
		//功能是返回平方数
		balance=a*a;
	}
	
	int getBalance(){
		return balance;
	}

	@Override
	public int compareTo(myObject o) {
		// TODO Auto-generated method stub
		return Integer.compare(this.getBalance(),o.getBalance());
		
		//ascending
	}
}

int compara(o1,o2):

class lengComp implements Comparator<String>
{

	@Override
	public int compare(String o1, String o2) {
		// TODO Auto-generated method stub
		return o1.length()-o2.length();
		
		//ascending
	}
}

lambda表达式

Arrays.sort(arr,
new MyObject implement Coparator<Integer>{
	@Override
	public int compare(Integer o1, Integer o2) {
		// TODO Auto-generated method stub
		return o2-o1;
		//return Integer.compara(o2,o1)
		
		//ascending
	}
})
//转成lambda表达式
 Arrays.sort(arr,(o1,o2)->o2-o1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值