Java中对集合排序有两种方式

Comparable和Comparator

public static <T> void sort(List<T> list); 将集合中的数据按照默认规则进行排序 (我们在自己的类里面实现Comparabl接口方法compareTo)
public static <T> void sort(List<T> list, Comparator<? super T>); 将集合中的数据按照指定规则进行排序
 /**
* @author gw
* @date 2019/11/5 0005 下午 22:15
*/ /*
* public static<T> void sort(List<T> list); 将集合中的数据按照默认规则进行排序
*
* 注意:
* sort使用前提:被排序的集合里面存储的元素,必须实现Comparable(接口),重写接口中的方法compareTo,定义排序规则
*
* 升序: this - 参数
* return 0;就是按照原来顺序输出
*
*
* */
public class Demo02Sort {
public static void main(String[] args) {
ArrayList<Person> objects = new ArrayList<>();
objects.add(new Person("小明", 23));
objects.add(new Person("小红", 24));
objects.add(new Person("小绿", 22)); System.out.println("objects = " + objects);
Collections.sort(objects);
System.out.println("objects = " + objects);
}
} class Person implements Comparable<Person> {
private String name;
private int age; @Override
public int compareTo(Person person) {
// return 0;
return this.getAge() - person.getAge(); } @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

Comparable

 /**
* @author gw
* @date 2019/11/5 0005 下午 22:40
*/ /*
* Comparator
* Comparable都是接口
*
* public static <T> void sort(List<T> list, Comparator<? super T> c)
*
* Comparable: 我们的类继承Comparable接口,然后实现里面的CompareTo方法,
* 如何调用:Collections.sort(arrayList)
*
* Comparator: 我们的类不用继承Comparable接口,也不用继承Comparator接口
* 如何调用:Collections.sort(objects, new Comparator<Person1>() { // 匿名类
@Override
public int compare(Person1 person1, Person1 t1) {
int res = person1.getAge() - t1.getAge();
// 前面减去后面,升序排列
if (res == 0) {
return person1.getName().charAt(0) - t1.getName().charAt(0);
}
return res;
}
});
*
* */
public class Demo03SortComparator {
public static void main(String[] args) {
ArrayList<Person1> objects = new ArrayList<>();
objects.add(new Person1("b小明", 23));
objects.add(new Person1("小红", 24));
objects.add(new Person1("小绿", 22));
objects.add(new Person1("a小绿", 23)); System.out.println("objects = " + objects);
Collections.sort(objects, new Comparator<Person1>() {
@Override
public int compare(Person1 person1, Person1 t1) {
// return 0;
int res = person1.getAge() - t1.getAge(); // 前面减去后面,升序排列
if (res == 0) {
return person1.getName().charAt(0) - t1.getName().charAt(0);
}
return res;
}
});
System.out.println("objects = " + objects);
}
} class Person1 {
private String name;
private int age; @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public Person1() {
} public Person1(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

Comparator

  * Comparable: 我们的类继承Comparable接口,然后实现里面的CompareTo方法,
* 如何调用:Collections.sort(arrayList)
*
* Comparator: 我们的类不用继承Comparable接口,也不用继承Comparator接口
* 如何调用:Collections.sort(objects, new Comparator<Person1>() { // 匿名类
@Override
public int compare(Person1 person1, Person1 t1) {
int res = person1.getAge() - t1.getAge();
// 前面减去后面,升序排列
if (res == 0) {
return person1.getName().charAt(0) - t1.getName().charAt(0);
}
return res;
}
});

Java中的sort的更多相关文章

  1. 关于Java中Collections.sort和Arrays.sort的稳定性问题

    一 问题的提出   关于Java中Collections.sort和Arrays.sort的使用,需要注意的是,在本文中,比较的只有Collections.sort(List<T> ele ...

  2. java中的Sort函数,你值得看

    基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数. 1.普通数组:Arrays.sort(数组名,开始位置,结束位置). 2.类中属性排序: 模板: class A { ...

  3. java中Arrays.sort()对二位数组进行排序

    int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升 ...

  4. java中Collections.sort排序详解

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

  5. 关于Java中Arrays.sort()方法TLE

    最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速 ...

  6. (网页)java中Collections.sort排序详解(转)

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

  7. [转]java中Collections.sort排序详解

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

  8. Java中Collections.sort()排序详解

      public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...

  9. Java中Arrays.sort()和Collections.sort()

    1.简单示例 sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.so ...

随机推荐

  1. 部署zabbix 4.0 + grafana

    不完整,仅供参考 Zabbix+grafana监控部署 基本环境 系统: CentOS Linux release 7.3.1611 Zabbix—server:  Zabbix_agent:   N ...

  2. BZOJ 3545: [ONTAK2010]Peaks 启发式合并 + 离线 + Splay

    Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询 ...

  3. OI多项式 简单学习笔记

    咕咕咕 先开个坑(其实是存模板来了) 一些特别简单的前置东西qwq 复数的计算 复数相加:向量相加,复数相乘.复数相乘:模长相乘,旋转量相加(就是复平面坐标轴逆时针旋转的角度) (当然也可以直接使用c ...

  4. Centos7安装Redis3.X

    本文只是简单搭建Redis,为了整合ELK用,后面会详细写. Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高 ...

  5. Bootstap

    Bootstrap框架 Bootstrap框架 Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序 ...

  6. VS Code报错Module 'xx' has no 'xx' member pylint(no-member)解决办法

    pylint是vscode的python语法检查器,pylint是静态检查,在用第三方库的时候有些成员只有在运行代码的时候才会被建立,它就找不到成员,在设置(settings.json)里添加 &qu ...

  7. 关闭layer.open打开的页面

    window.parent.location.reload(); //刷新父页面 var index = parent.layer.getFrameIndex(window.name); //获取窗口 ...

  8. Python中的self用法之面向对象

    class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def ...

  9. ARM过程调用标准——APCS

    APCS(ARM Procedure Call Standard) 1.ARM寄存器 ARM核支持9种工作模式——User/System/Hyp+/SVC/Abort/Undefined/Monito ...

  10. hook工具

    调试工具 WinDbg com/daoyuly/p/3570037 DebugDiag procexp64.exe APIMonitor OllyDBG API伴侣 FileMon  v7.04  ( ...