赞
踩
目录
1.使用List的sort()方法,自定义一个Compartor比较器
2.使用List的sort()方法,Lambda表达式写法【写法很简单,推荐】
3.使用Collections.sort()方法【重写Comparable接口】
4.使用Collections.sort()方法【自定义Compartor比较器】
首先我们新建一个Person类,并为其设置age属性,我们后续根据该属性进行从小到大的排序。
- public class Person{
- public int age;
- .....
- 此处省略get,set和toString方法方法
- .....
- }
之后新建测试类Test
- public class Test {
- public static void main(String[] args) {
- List<Person> list = new ArrayList<>();
- list.add(new Person(5));
- list.add(new Person(7));
- list.add(new Person(4));
- list.add(new Person(2));
- list.add(new Person(0));
- list.add(new Person(3));
- list.add(new Person(1));
- list.add(new Person(6));
- ......
- 排序方法往后看
- ......
- System.out.println(list);
- }
- }
- public static void comp(List<Person> list){
- list.sort(
- new Comparator<Person>() {
- @Override
- public int compare(Person o1, Person o2) {
- if ((o1.getAge() - o2.getAge()) > 0) {
- return 1;
- }
- else if ((o1.getAge() - o2.getAge()) < 0) {
- return -1;
- }
- else {
- return 0;
- }
- }
- }
- );
-
- }
- public static void lambda(List<Person> list){
- list.sort(((o1,o2) -> {
- //从小到大
- return o1.age - o2.age;//此处定义比较规则,o2.age-o1.age即为从大到小
- }));
- }
注意:该方法需要元素类实现Comparable接口,并且重写compareTo方法,排序按照compareTo中的规则进行排序。
Person类
- public class Person implements Comparable<Person>{
- public int age;
-
- public Person(){
-
- }
- public Person(int age){
- this.age = age;
- }
-
- @Override
- public int compareTo(Person o) {
- return this.age - o.age;
- }
-
- ———————————————————————————————
- 此处省略get、set和toString方法
- ————————————————————————————————
-
- }
Test类中直接调用
Collections.sort(list);
- public static void coll(List<Person> list){
- Collections.sort(list, new Comparator<Person>() {
- @Override
- public int compare(Person o1, Person o2) {
- return o1.getAge() - o2.getAge(); //按数量从大到小排序
- }
- });
- }
注意:比较器也可以写在元素类中
- public class Person{
- public int age;
-
- public Person(){
-
- }
- public Person(int age){
- this.age = age;
- }
-
- public static Comparator<Person> comparator = new Comparator<Person>() {
-
- @Override
- public int compare(Person o1, Person o2) {
- return o2.age - o1.age;
- }
- };
- +++++++++++++
- 此处省略get、set和toString方法
- +++++++++++++
-
- }
Test类中调用
Collections.sort(list,Person.compartor)
这种方式利用Stream API中的sorted()
方法,通过Comparator.comparingInt()
指定排序的字段(例如age
),并使用collect()
方法将排序后的元素收集到一个新的列表中。
- public static List<Person> stream(List<Person> list){
- list = list.stream()
- .sorted(Comparator.comparing(Person::getAge))
- .collect(Collectors.toList());
- return list;
- }
- public static void buubleSort(List<Person> list){
- for (int i = 0; i < list.size(); i++) {
- for(int j = 0;j<list.size() - 1;j++){
- if(list.get(j).getAge() > list.get(j+1).getAge()){
- Person temp = list.get(j);
- list.set(j,list.get(j+1));
- list.set(j+1,temp);
- }
- }
- }
-
- }
本人还有对优先级队列倒序排序的文章,欢迎大家观看批评指正!蟹蟹
点击传送=>完成对优先级队列倒叙排序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。