Arrays.sort()和Collections.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;
		}
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值