Java中的sort
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的更多相关文章
- 关于Java中Collections.sort和Arrays.sort的稳定性问题
一 问题的提出 关于Java中Collections.sort和Arrays.sort的使用,需要注意的是,在本文中,比较的只有Collections.sort(List<T> ele ...
- java中的Sort函数,你值得看
基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数. 1.普通数组:Arrays.sort(数组名,开始位置,结束位置). 2.类中属性排序: 模板: class A { ...
- java中Arrays.sort()对二位数组进行排序
int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升 ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- 关于Java中Arrays.sort()方法TLE
最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速 ...
- (网页)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()排序详解
public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...
- Java中Arrays.sort()和Collections.sort()
1.简单示例 sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.so ...
随机推荐
- AQS源码分析笔记
经过昨晚的培训.对AQS源码的理解有所加强,现在写个小笔记记录一下 同样,还是先写个测试代码,debug走一遍流程, 然后再总结一番即可. 测试代码 import java.util.concurre ...
- node.js入门学习(二)MIME模块,request和response对象,demo之不同url请求不同html页面,页面包含图片、样式css等静态资源
一.构建http服务程序-根据不同请求做出不同响应 // 加载http模块 var http = require("http"); // 创建一个http服务对象 http.cre ...
- UVa 1343 The Rotation Game (状态空间搜索 && IDA*)
题意:有个#字型的棋盘,2行2列,一共24个格. 如图:每个格子是1或2或3,一共8个1,8个2,8个3. 有A~H一共8种合法操作,比如A代表把A这一列向上移动一个,最上面的格会补到最下面. 求:使 ...
- CDOJ 203 并查集+优先队列 好题
题目链接 Islands Time Limit: 30000/10000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) S ...
- sqli-labs(28a)
0X01构造闭合 爆字段数 /?id=') order by 1%23 ?id=') order by 5%23 偷看一下源码 就只过滤了union select 闭合') 那我们来尝试一下 0X02 ...
- 在linux下搭建go环境
这几天小Jerry开始接触Go语言了,因为小Jerry学个东西必须要从最基础的开始弄懂,不然~她理解不了<hahaha> 所以,今天就来讲最基础,却也很容易让小Jerry这样的菜鸟感到困扰 ...
- 打开远程桌面时总提示无法打开连接文件default.rdp
删除C:\Users\Administrator\Documents\default.rdp,再启动远程就好了 http://www.chahushequ.com/read-topic-94-2fa9 ...
- taihong
揭秘!除了台风 我们还能在卫星云图上看到什么? 2019-08-08 09:20:53 来源: 中国天气网 中国天气网讯 说到卫星云图,可能大多数人首先能想到的就是台风.其实,拥有太空视角的卫星能 ...
- 文件的权利和sudoers中规定的权限哪个更大?
文件的权利和sudoers中规定的权限哪个更大? 当然是文件的权限更大!!! 这也是linux的 更安全的根本所在! 就是它的每一个文件都有严格的 rwxr--r-- 权限规定. 只有文件权限规定了的 ...
- hibernate更新
1.使用对象更新 public void updateImagePath(Weibo weibo){ Session session = HibernateUtil.currentSession(); ...