java Collections.sort()
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()的更多相关文章
- Java Collections.sort方法对list集合排序
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...
- java Collections.sort()实现List排序自定义方法
方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...
- java Collections.sort()实现List排序的默认方法和自定义方法
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- java Collections.sort()实现List排序的默认方法和自定义方法【转】
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- 关于java Collections.sort 排序
public static void main(String[] args) { int[] dd = {12,34,46,123,23,2,35,13,543231,65,5645,57}; Arr ...
- JAVA Collections工具类sort()排序方法
主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- Java面试总结系列之Collections.sort()
面试中被问到,集合类中的排序方法是怎么实现的?没有回答上来,故而总结如下:你知道么? 前提:在eclipse中对于自己的代码可以通过按住Ctrl的同时单击名称跳入相应源码中.但eclipse默认没有添 ...
- python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
随机推荐
- spark:ML和MLlib的区别
ML和MLlib的区别如下: ML是升级版的MLlib,最新的Spark版本优先支持ML. ML支持DataFrame数据结构和Pipelines,而MLlib仅支持RDD数据结构. ML明确区分了分 ...
- 【Python】爬虫-2
8. urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL的headers),urllib.urlopen只接收一个url ...
- Transport & Buffer
Transport 传输API的核心是Channel接口,用于所有的出站操作. 每个Channel都会分配一个ChannelPipeline和ChannelConfig.ChannelConfig负责 ...
- 运行和管理Rabbit
节点描述的是一个Erlang节点运行着一个Erlang应用程序.Erlang虚拟机的每个实例我们称之为节点.多个Erlang应用程序可以运行在同一个节点之上.节点之间可以进行本地通信.在RabbitM ...
- MYSQL escape用法--转义
在sql like语句中,比如 select * from user where username like '%nihao%',select * from user where username l ...
- Oracle client安装教程
一.下载 下载地址:http://download.csdn.net/detail/qq_35624642/9773986 这是Oracle Instant Client的CSDN下载地址. 要注意第 ...
- 2.11 alert\confirm\prompt
2.11 alert\confirm\prompt 前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用 ...
- TrueCrypt 7.1a Hashes
Here are the SHA256, SHA1, and MD5 hashes of all TrueCrypt version 7.1a files. The signature of the ...
- Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at xxxx/usr/bin/automake line 3939.
/********************************************************************** * Unescaped left brace in re ...
- MySQL篇,第三章:数据库知识3
MySQL 数据库 3 索引 1.普通索引(MUL) 2.唯一索引(UNI) 3.主键索引(PRI) 1.使用规则 1.一个表中只能有一个主键(primary)字段 2.对应字段的值不允许重复 ...