arrays.sort
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;
}
}
}
相关阅读
之前做笔试有个排序的问题,可以将字符串转换成字符数组再进行排序,之后用toString()方法在转为字符串,但当时没有想到,特此记录下来。
默认按ASCII码排序,一位一位的比较,应该排了3次第一次比较第一位全部是a,所以顺序没变第二次第二位排序[a0, a1, a12, a11, a10, a2,
Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。 但是sort()的参数有好几种,下
请注明出处:http://blog.csdn.net/qq_23179075/article/details/78753136 Java中Collections.sort()的使用! 在日常开发中,很多时候
深入理解Java 中的Arrays.sort()方法 Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常