sort()是Collections中的静态方法,用于对List容器中的元素排序。

如容器list中存储的是Integer对象

        List<Integer> list =Arrays.asList(3, 2, 7, 5, 9, 6);
System.out.println(Arrays.toString(list.toArray()));

输出结果为:[3, 2, 7, 5, 9, 6]

使用Collections.sort()对list排序

        Collections.sort(list);
System.out.println(Arrays.toString(list.toArray()));

输出结果为:[2, 3, 5, 6, 7, 9]

使用Collections.sort()是有约束条件的,List中存储的对象必须实现了Comparable接口,如Integer,Double等。

如下定义一个Interval(区间)对象:

class Interval {
int start;
int end;
Interval(int start, int end) {
this.start = start;
this.end = end;
}

容器list中存储的为Interval对象,使用Collections.sort()方法则报错。

        List<Interval> list = new ArrayList<>();
list.add(new Interval(2, 4));
list.add(new Interval(0, 4));
list.add(new Interval(3, 5));
list.add(new Interval(1, 2));
list.add(new Interval(7, 9));
list.add(new Interval(6, 8)); Collections.sort(list); // error

一种方法是使Interval类实现Comparable接口,按Interval对象中start大小排序。

class Interval implements Comparable<Interval>{
int start;
int end;
Interval(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Interval temp) {
return this.start - temp.start;
}
}

再使用Collections.sort()方法对list中的元素排序,便不会报错。

        List<Interval> list = new ArrayList<>();
list.add(new Interval(2, 4));
list.add(new Interval(0, 4));
list.add(new Interval(3, 5));
list.add(new Interval(1, 2));
list.add(new Interval(7, 9));
list.add(new Interval(6, 8));
for (Interval obj:list)
System.out.print(obj.start + " ");
System.out.println(); Collections.sort(list); for (Interval obj:list)
System.out.print(obj.start + " ");

输出结果为:

2 0 3 1 7 6
0 1 2 3 6 7

另一种方法是使用Collections.sort(List<T> list, Comparator<? super T> c),使用一个Comparator对象,完成list中元素的排序。

如:

class MyComparator implements Comparator<Interval> {
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
}
        Collections.sort(list, new MyComparator());

        for (Interval obj:list)
System.out.print(obj.start + " ");

输出结果为:0 1 2 3 6 7

也可以使用匿名内部类

        Collections.sort(list, new Comparator<Interval>(){

            @Override
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
});

也可以使用Lambda表达式:

        Collections.sort(list, (a,b)->(a.start-b.start));

总结:

Collections.sort()用于对List中存储的对象进行排序,该方法有两种使用方式。

Collections.sort(List<T> list)   list中的元素必须实现了Comparable接口。

Collections.sort(List<T>list, Comparator<? super T>),使用Comparator对象比较list中的元素。

java Collections.sort()的更多相关文章

  1. Java Collections.sort方法对list集合排序

    1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...

  2. java Collections.sort()实现List排序自定义方法

    方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...

  3. java Collections.sort()实现List排序的默认方法和自定义方法

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  4. java Collections.sort()实现List排序的默认方法和自定义方法【转】

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  5. 关于java Collections.sort 排序

    public static void main(String[] args) { int[] dd = {12,34,46,123,23,2,35,13,543231,65,5645,57}; Arr ...

  6. JAVA Collections工具类sort()排序方法

    主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...

  7. java中Collections.sort排序详解

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  8. Java面试总结系列之Collections.sort()

    面试中被问到,集合类中的排序方法是怎么实现的?没有回答上来,故而总结如下:你知道么? 前提:在eclipse中对于自己的代码可以通过按住Ctrl的同时单击名称跳入相应源码中.但eclipse默认没有添 ...

  9. python 中的sort 和java中的Collections.sort()函数的使用

    x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...

随机推荐

  1. 【转】Delphi XE10 Android Splash设备自适应和沉浸式状态条

    再次提笔写博客,已经相隔7年,原来的CSDN账号需要手机验证,而我的手机又捆绑到这个账号了,就用新账号吧,不想折腾了. 原账号的帖子,有研究DICOM3.0的可以看下:http://blog.csdn ...

  2. scrapy中自动补全url

    url = "https:" + url 或者url = response.urljoin(url) #这里代表的是自动补全url

  3. 记第二届CCPC全国女生赛参赛体验

    离比赛时间已经有点久了,今天整理博客看到“”参赛体会“”这一分类,觉得记录一下也好 流水账记一下感受 因为题目我已经忘记了.. 第一次..那么久..大概有三个多小时在金牌区吧.. 然后就是一无所出了. ...

  4. 关于Q-LEARNING的优化

    Q-LEARNING 最后得到的一个图寻路最佳路径:---直接转化为图关于多顶点深度遍历热度传递 V(level+1) = 0.8 * Max(Vi(level))   这个方法可以在O时间收敛 原方 ...

  5. Smali插桩打日志

    一.smali目录下新建crack.smali,内容如下: .class public Lcrack; .super Ljava/lang/Object; .source "crack.ja ...

  6. systemd设置静态IP

    /********************************************************************************* * systemd设置静态IP * ...

  7. Python之路,第十五篇:Python入门与基础15

    python3   异常 异常(基础) 什么是错误? 错误是指由于逻辑或语法错误等,导致一个程序已无法正常执行的问题. 什么是异常? 异常是程序出错时标识的一种状态,当异常发生时,程序不会再向下执行, ...

  8. TLS编程

    最近测试广州电信的电话会议平台,该平台接入采用HTTPS协议,于是有了本文.09年培训时写过一个简单的TLS C/S结构交互,采用openssl的ssl相关接口,但与生产相去胜远.本文采用openss ...

  9. transition的用法以及animation的用法

    http://www.cnblogs.com/xiaohuochai/p/5347930.html transiton: 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间: 触发过渡 单纯的代码不 ...

  10. django HttpResponse的用法

    一.传json字典 def back_json(rquest): #JsonResponse父类是HttpResponse,原码里调用了json.dumps() from django.http im ...