目录
1.使用List的sort()方法,自定义一个Compartor比较器
2.使用List的sort()方法,Lambda表达式写法【写法很简单,推荐】
3.使用Collections.sort()方法【重写Comparable接口】
4.使用Collections.sort()方法【自定义Compartor比较器】
5.使用StreamAPI【推荐】
6.结合冒泡排序暴力排序
首先我们新建一个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);}
}
1.使用List的sort()方法,自定义一个Compartor比较器
public static void comp(List<Person> list){list.sort(new Comparator<Person>() {@Overridepublic 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;}}});}
2.使用List的sort()方法,Lambda表达式写法【写法很简单,推荐】
public static void lambda(List<Person> list){list.sort(((o1,o2) -> {//从小到大return o1.age - o2.age;//此处定义比较规则,o2.age-o1.age即为从大到小}));}
3.使用Collections.sort()方法【重写Comparable接口】
注意:该方法需要元素类实现Comparable接口,并且重写compareTo方法,排序按照compareTo中的规则进行排序。
Person类
public class Person implements Comparable<Person>{public int age;public Person(){}public Person(int age){this.age = age;}@Overridepublic int compareTo(Person o) {return this.age - o.age;}———————————————————————————————此处省略get、set和toString方法————————————————————————————————}
Test类中直接调用
Collections.sort(list);
4.使用Collections.sort()方法【自定义Compartor比较器】
public static void coll(List<Person> list){Collections.sort(list, new Comparator<Person>() {@Overridepublic 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>() {@Overridepublic int compare(Person o1, Person o2) {return o2.age - o1.age;}};+++++++++++++此处省略get、set和toString方法+++++++++++++}
Test类中调用
Collections.sort(list,Person.compartor)
5.使用StreamAPI【推荐】
这种方式利用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;}
6.结合冒泡排序暴力排序
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);}}}}
本人还有对优先级队列倒序排序的文章,欢迎大家观看批评指正!蟹蟹
点击传送=>完成对优先级队列倒叙排序