java集合数据排序方法api整理

一 、 对数组进行排序

这里指的数组包括基本数据类型的数组,例如int ,float,string等,

方法一: 调用Arrays的sort方法,默认为升序排序

与c++的用法类似,也可以指定范围进行排序

 int[] intNum = {2,3,1};
 Arrays.sort(intNum);// 默认升序排序
  Arrays.sort(intNum, 1, 2);  // 对数组中的制定范围进行排序
  

方法二: 自定义排序,实现Comparator接口

在Java中如果对自定义类数组进行排序,或者二维数组排序,可以实现Comparator接口进行排序


class MyComparator implements Comparator<float[]> {

    @Override
    public int compare(float[] o1, float[] o2) {
        if (o1[0] == o2[0]) {
            return 0;
        }
        return o1[0] < o2[0] ? -1 : 1; // 按照数组第一位升序排序
    }
}


	 float[][] nums = {{1,2},{3,4}};
	 Comparator myCompare = new MyComparator();
	 Arrays.sort(nums, myCompare);
	 Arrays.sort(nums, 0, 1, myCompare); // 自定义排序方法, 从fromIndex 到 endIndex

	 users[0] = new User(10,"a");
	 users[1] = new User(8,"b");
	 users[2] = new User(9, "c");
	 Arrays.sort(users, new Comparator<User>() {  // 自定义排序 , 其他功能同上
            @Override
            public int compare(User o1, User o2) {
                ....; // 自定义排序规则
                return 0;
            }
        });


方法三: 自定义类实现Comparable接口

如果自定义类实现了comparable 接口,那么在调用Arrays的sort方法时候,会根据类中的CompareTo方法进行排序

class User implements Comparable<User>{

    public User(int stuNo, String name) {
        this.stuNo = stuNo;
        this.name = name;
    }
    String name;
    int stuNo;
    @Override
    public int compareTo(User o) {
        // 按照学号排序
        return 0;
    }
}
 Arrays.sort(users);

对 集合进行排序

java集合,即List的相关实现类,ArrayLIst, LinkedList, vector都可以使用Collections,注意不是Collection,两者有区别,的排序方法。

    public  void listSort() {
        List<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(9);

        List<User> userList = new LinkedList<>();

        Collections.sort(list); // 直接对list排序
        Collections.sort(userList);
        
        Collections.sort(userList, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return 0;
            }
        });
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值