java中Collections.sort()方法实现集合排序
1.Integer/String泛型的List进行排序
List <Integer> integerlist = new ArrayList<Integer>(); //定义一个Integer泛型的List
然后用add()方法添加一些Integer类型的数据到该List中,
Collections.sort(integerlist); //因为是数值型的数据,排序即按照大小升序排序
2.自定义泛型的List进行排序
其实Collections.sort(List)方法进行排序的前提是:List对象中的泛型类实现了Comparable接口;
我们拿学生类来用具体的代码演示一下:
public class Student implements Comparable<Student>{
int id;
String name;
........
public int compareTo(Student o){ //实现接口自然要实现接口的方法
return this.id.compareTo(o.id); //规定学生对象排序的依据,这里按ID排序
}
}
然后就可以对一个由学生对象组成的List表进行Collections.sort(List)排序了(其实是按ID排序)
Comparable接口定义的规则是默认规则。
3.Comparator接口
这个接口可以帮助我们事先定义好各种比较规则,用的时候直接换规则,不用去改泛型对象里
的比较方法compareTo(),
ID排序规则(类):
public class comparebyid implements Comparator<Student>{
public int compare(Student o1,Student o2){
return o1.id.compareTo(o2.id);
}
}
Name排序规则(类):
public class comparebyname implements Comparator<Student>{
public int compare(Student o1,Student o2){
return o1.name.compareTo(o2.name);
}
}
规则定义好了,如何使用呢?
先实例化一个规则对象,将对象传入Collections.sort()方法中:
Collections.sort(studentlist,new comparebyname());
这样就能忽略上面的默认规则,实现按照新的规则(姓名排序)排序了。
java中Collections.sort()方法实现集合排序的更多相关文章
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 关于Java中Collections.sort和Arrays.sort的稳定性问题
一 问题的提出 关于Java中Collections.sort和Arrays.sort的使用,需要注意的是,在本文中,比较的只有Collections.sort(List<T> ele ...
- Java中Collections.sort()排序详解
public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- (网页)java中Collections.sort排序详解(转)
转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...
- [转]java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e, ...
- Java基础集锦——利用Collections.sort方法对list排序
要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以 ...
- 关于Java中Arrays.sort()方法TLE
最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速 ...
- Collections.sort方法对list排序的两种方式
Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定 ...
随机推荐
- javascript之DOM编程实现城市的联动框
需求;用一张图片表示. 分析: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...
- C++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)
本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default co ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景
============================================================================ 服务的生命周期: 一.采用start的方式开始 ...
- unity 快速创建小地图
先写一个纹理遮罩shader Shader "Unlit/TexMask" { Properties { _MainTex ("Texture", 2D) = ...
- PLSQL_R12 MOAC多组织的四个应用(案例)
一.摘要 R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充 1. 开发时打开Form自动弹出组织选择实现方式(增加C ...
- android Timer与TimerTask的相关操作
项目上面的部分操作需要使用到定时器进行周期性的控制.网络上面对于定时器的操作通常有三种实现方法. 我是通过Timer与TimerTask相结合实现的定时器功能.具体实现过程如下: 第一步,得到Time ...
- 【一天一道LeetCode】#15 3Sum
一天一道LeetCode系列 (一)题目 Given an array S of n integers, are there elements a, b, c in S such that a + b ...
- 通过服务修改widgetUI
public static void updateAppWidget(Context context, String displayMsg) { AppWidgetManager appWidgetM ...
- Android特效专辑(十)——点击水波纹效果实现,逻辑清晰实现简单
Android特效专辑(十)--点击水波纹效果实现,逻辑清晰实现简单 这次做的东西呢,和上篇有点类似,就是用比较简单的逻辑思路去实现一些比较好玩的特效,最近也是比较忙,所以博客更新的速度还得看时间去推 ...