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 ...
随机推荐
- git 清除缓存
清除git缓存 git config --local --unset credential.helper git config --global --unset credential.helper g ...
- 15. ClustrixDB 管理数据分布
本节使用的关键术语: Relation — ClustrixDB中的每个表都被称为“关系”. Representation — 在ClustrixDB中,每个索引都称为一个“Representatio ...
- Redis 数据安全与性能保障
数据安全与性能保障 ·将数据持久化至硬盘·将数据复制至其他机器·处理系统故障·reids事务·非实物型流水线·诊断性能问题 持久化选项: 共享选项,这个选项决定了快照文件和AOF文件的保存位置dir ...
- Linux入门培训教程 常见linux命令释义
快到中午吃饭了,然后忽然想起来samba里面没有添加用户.于是乎,就玩弄起了samba. Samba三下五除二就安装好了,想想window里面不断的点击下一步,还要小心提防各种隐藏再角落里的绑定软件. ...
- pluginManagement的坑
想用protobuf-maven-plugin插件,用了<pluginManagement/>标签包裹<plugin/>,就引不进来,去掉就可以引进来.需要研究下. <b ...
- strcat()与strcpy()用法
1.strcpy (1)原型 extern char *strcpy(char *dest,char *src); (2)用法 #include <cstring> (3)功能 把src所 ...
- CentOS查看进程端口号以及kill操作
查看端口: 使用 netstat -anp | grep 8090即:netstat –apn | grep 8090 查看进程:1.ps 命令用于查看当前正在运行的进程,grep 是 ...
- (一)SQL -- 基础知识
SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言. 优点:功能强.效率高.简单易学易维护. 缺点:非过程化语言,大多数语言都是独立执行,与上下文无关,而大多数 应用都是一个完整的过程,显然 ...
- 记一次CTF实验吧的代码审计
0X01 0X01 Burp抓包找到hint 访问地址看源码 <?php $info = ""; $req = []; $flag="xxxxxxxxxx" ...
- HDU 2243 ( Trie图 矩阵构造幂和 )
题意 : 长度不超过L,只由小写字母组成的,至少包含一个词根的单词,一共可能有多少个呢?这里就不考虑单词是否有实际意义. 比如一共有2个词根 aa 和 ab ,则可能存在104个长度不超过3的单词, ...