【Comparator的compare方法如何定义升序降序】教程文章相关的互联网学习教程文章

另一种比较器:Comparator【代码】

package comparatordemo.cn;import java.util.Comparator;/** 一个对象的初期,并没有实现comparable 接口,此时肯定无法进项对象的排序操作,所以为了解决这个问题,* Java又定义了另一个比较器的操作接口,但是前提是:必须先定义好一个比较规则类出来* 接口的定义如下:* public interface Comparator<T>{* public int compare(T o1, T o2) ;* boolean equals(Object obj) ;*}*///定义一个person类class Person{private String n...

comparator接口与Comparable接口的区别【代码】

1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList ), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排序一个字符串list呢:如 StringList{"hello1" , "hello3" , "hello2"}, Collecti...

为什么会有Comparable与Comparator接口? 引入策略模式【代码】【图】

目录引入Comparable接口的来龙去脉引入Comparator接口什么是策略模式?使用了策略模式有什么好处?引入大家先考虑一个场景, 有一个整形数组, 我们希望通过调用一个工具类的排序方法就能对该数组进行排序. 请看下面的代码:public class Strategy {public static void main(String[] args) {int[] arr = {5, 3, 1, 7, 2};new DataSorter().sort(arr);//调用工具类进行排序for(int i = 0; i < arr.length; i++){System.out.println(arr[...

Comparator的compare方法如何定义升序降序【代码】

我们都知道compare(int o1, int o2)方法 return o1 - o2 是升序,return o2 - o1 是降序。那么原因我们不妨跳进去源码看一下。public static <T> void sort(T[] a, Comparator<? super T> c) {if (c == null) {sort(a);} else {if (LegacyMergeSort.userRequested)legacyMergeSort(a, c);elseTimSort.sort(a, 0, a.length, c, null, 0, 0);}}可以看出他是进去了else内,不妨先进入legacyMergeSort看一下private static <T> void ...