Comparable 用作默认的比较方式
Comparator 用作自定义的比较方式,当默认的比较方式不适用时或者没有提供默认的比较方式,使用Comparator就非常有用。
像Arrays和Collections中的排序方法,当不指定Comparator时使用的就是默认排序方式,也就是使用Comparable。指定Comparator时就是使用提供的比较器。
sort(Object[]) 所有的对象都必须实现Comparable接口,它用来确定对象之间的大小关系
sort(Object[], Comparator) 对象不必实现Comparable接口,由Comparator来确定对象之间的大小关系
( 一 Arrays.sort())
Java中的Arrays类的sort()方法,是Arrays类的静态方法,在需要对数组进行排序时非常好用。
1. Arrays.sort(int[] a)
对数组中的所有元素进行排序,由小到大排序
import java.util.Arrays;
public class Main {
//Arrays.sort(int[] a)
public static void main(String[] args) {
int[] a={4,5,3,1,8};
Arrays.sort(a);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");//结果 1 3 4 5 8
}
//System.out.println(Arrays.toString(a));
String[] array1=new String[]{"a","A","g","Z"};
Arrays.sort(array1);
System.out.println(Arrays.toString(array1));//先大写后小写 A Z a g
Arrays.sort(array1,String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(array1));//字符串字母表排序 忽略大小写
Integer[] list={3,4,2,6,8};
Arrays.sort(list,Collections.reverseOrder());
System.out.println(Arrays.toString(list));//倒序(由大到小)输出 8 6 4 3 2
}
}
2
.
Arrays.sort(int[] a,int fromIndex,int toIndex)
对数组部分排序,对数组a的下标从fromIndex到toIdex-1进行排序,注意:下标为toIndex的元素不参与排序
import java.util.Arrays;
public class Main {
//Arrays.sort(int[] a,int fromIndex,int toIndex)
public static void main(String[] args) {
int[] a={5,3,1,6,8,9,3};
Arrays.sort(a,0,3);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");// 结果为 1 3 5 6 8 9 3 只对下标为 0 1 2的进行排序
}
}
}
3.
Arrays.sort(Integer[] a,Comparator cmp)
Arrays.sort()只能由小到大排序 ,那么 如何由大到小排序呢?
import java.util.Arrays;
import java.util.Comparator;
public class Main{
//利用 Arrays.sort(Integer[] a,Comparator cmp) 进行由大到小排序
public static void main(String[] args) {
Integer[] a={4,9,1,3,5,8};//注意 Integer
Comparator cmp=new MyComparator();
Arrays.sort(a,cmp);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
public static class MyComparator implements Comparator<Integer>
{
public int compare(Integer arg0, Integer arg1) {
if(arg0<arg1)
return 1;
else if(arg0>arg1)
return -1;
else
return 0;
}
}
}
( 二 Collections.sort())
1.使用Collections.sort(List<> list)需要使用List
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class Main9 {
//Collections.sort()
public static void main(String[] args) {
int a=1,b=7,c=4,d=5;
List<Integer> list=new ArrayList<Integer>();
list.add(a);list.add(b);list.add(c);list.add(d);
Comparator cmp=new MyComparator();
Collections.sort(list,cmp);
Iterator<Integer> it=list.iterator();
while(it.hasNext())
{
System.out.print(it.next()+" ");
}
}
public static class MyComparator implements Comparator<Integer>
{
public int compare(Integer arg0, Integer arg1) {
if(arg0<arg1)
return 1;
else if(arg0>arg1)
return -1;
else
return 0;
}
}
}