集合类比较器的使用(compareTo方法的实现)

当对集合进行排序的时候需要正确实现compareTo方法

实现compareTo方法有一下2种途径:
  • 让元素类(集合中的元素)实现Comparable接口
  • 外带一个Comparator对象
比较规则

如果从小到大,那么左边的元素小于右边的元素,所以该情况下返回负数,即可实现小到大的排序,同理得,如果从大到小,那么左边的元素大于右边的元素,所以该情况下返回负数,即可实现大到小的排序。

compareTo方法的实现
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


public class mon {

	public static void main(String[] args) {
	
		List<String> list=new ArrayList<>();
		list.add("苍老师");
		list.add("小泽玛利亚老师");
		list.add("波多老师");
		Collections.sort(list, new c());
		
		/*等效于
			Collections.sort(list, new Comparator<String>() {
	
				@Override
				public int compare(String o1, String o2) {
					
					return o1.length()-o2.length();
				}
			});*/
			
	}

}
class c implements Comparator<String>{

	@Override
	public int compare(String o1, String o2) {

		return o1.length()-o2.length();
	}
	
}
等效
class c implements Comparator<String>{

	@Override
	public int compare(String o1, String o2) {

	  if (o1.length()>o2.length())
                return 1;
            else if (o1.length()<o2.length())
                return -1 ;
            else
                return 0;
        
	}
	
}
分析

通过代码可以看出,该排序为小到大,因为当左边小于右边的时候返回负数,还有也应该在相应的情况下返回正数和0,返回0意味着两元素相同,返回正数在一些方法中也需要用到,如二分查找

二分查找Collections.binarySearch

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值