Java排序方法sort的使用详解

对数组的排序:

//对数组排序
public void arraySort(){
int[] arr = {1,4,6,333,8,2};
Arrays.sort(arr);//使用java.util.Arrays对象的sort方法
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}

需要用到降序排列,首先想到了Arrays.sort方法,但是Arrays.sort默认是升序排列,
可以使用一下方式来达到降序的需求。

Arrays.sort(a,Collections.reverseOrder());
1
但是存在一个问题,Arrays.sort(a,Collections.reverseOrder())不支持基本类型(int,double,char等),如果是int型需要改成Integer,float要改成Float。
例如:

public static void main(String[] args) {
Integer[] a = { 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a,Collections.reverseOrder());
int[] res = new int[a.length];
for (int i = 0; i < a.length; i++) {
res[i] = Integer.valueOf(a[i]);
}
for (int j = 0; j < res.length; j++) {
System.out.println(res[j] + " ");
}
}
————————————————
版权声明:本文为CSDN博主「付石头_stone」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010947534/article/details/96323757
对集合的排序:
import java.util.Arrays;
import java.util.Comparator;

public class ArraysDemo1 {
public static void main(String[] args) {
//int包装类对象数组,赋值
Integer[] arr = {12,15,32,16,20,25};
//传入引用类型对象arr,用匿名类实现Comparator接口,i1在前则为升序,反正降序
Arrays.sort(arr, new Comparator() {
@Override
public int compare(Integer i1, Integer i2) {
int num = i2 - i1;
return num;
}
});
//打印数组
System.out.println(Arrays.toString(arr));
}

————————————————
版权声明:本文为CSDN博主「adolph_1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/adolph_1/article/details/88921358
1.Collections的reverseOrder
import java.util.*;

public class Main {
public static void main(String[] args) {
// 注意这里是Integer,不是int
Integer[] arr={9,8,7,6,5,4,3,2,1};
Arrays.sort(arr,Collections.reverseOrder());
for(int i:arr){
System.out.println(i);
}
}

2.利用Comparator接口复写compare
import java.util.*;

public class Main {
public static void main(String[] args) {
Integer[] arr={9,8,7,6,5,4,3,2,1};
Comparator cmp=new CMP();
Arrays.sort(arr,cmp);
for(int i:arr){
System.out.println(i);
}
}
}
class CMP implements Comparator{
@Override //可以去掉。作用是检查下面的方法名是不是父类中所有的
public int compare(Integer a,Integer b){
// 两种都可以,升序排序的话反过来就行
// return a-b<0?1:-1;
return b-a;
}
}

注意:如果需要改变默认的排列方式,不能使用基本类型(int,char等)定义变量,而应该用对应的类
转换成Integer[]
int[] nums = new int[]{1,6,4,55,61,3,5,8,4,2,8,15,61,33};
Integer[] temp = new Integer[nums.length];
for (int i = 0; i < temp.length; i++) {
temp[i] = nums[i];
}
Arrays.sort(temp,(i,j)->(j-i));
for (int i = 0; i < nums.length; i++) {
nums[i] = temp[i];
}
System.out.println(Arrays.toString(nums));
————————————————
版权声明:本文为CSDN博主「mp-ui」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45740349/article/details/110298747
//对list升序排序
public void listSort1(){
List list = new ArrayList();
list.add(1);
list.add(55);
list.add(9);
list.add(0);
list.add(2);
Collections.sort(list);//使用Collections的sort方法
for(int a :list){
System.out.println(a);
}
}
//对list降序排序
public void listSort2(){
List list = new ArrayList();
list.add(1);
list.add(55);
list.add(9);
list.add(0);
list.add(2);
Collections.sort(list, new Comparator() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});//使用Collections的sort方法,并且重写compare方法
for(int a :list){
System.out.println(a);
}
}
注意:Collections的sort方法默认是升序排列,如果需要降序排列时就需要重写conpare方法

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值