数组排序
Integer[] a = {1,2,3,4,5,6};
Arrays.sort(a, (a1, b1)->{
return b1-a1;//倒序排序
});
System.out.println(Arrays.toString(a));
Java中Arrays.sort()的三种常用用法(自定义排序规则)_arrays.sort() 自定义排序_请叫我算术嘉的博客-CSDN博客
HashMap排序
import java.util.*;
public class test {
public static void main(String[] args){
HashMap<String, Integer> map = new HashMap<>();
map.put("A",34);
map.put("J",73);
map.put("B",12);
System.out.println(map);
//按键排序
Set set = map.keySet();
Object[] arr = set.toArray();
Arrays.sort(arr);
for(Object key:arr){
System.out.println(key+":"+map.get(key));
}
System.out.println("困成狗的分割线哟~~~");
//按值排序
//转换为List
List<Map.Entry<String, Integer>> list1 = new ArrayList<>(map.entrySet());
//使用list.sort()排序
list1.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String, Integer> mapping : list1){
System.out.println(mapping.getKey()+"::"+mapping.getValue());
}
}
}
实体类排序
一个Student的实体类,属性有id name age。
按年龄一个字段排序
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
class Student implements Comparator<Student>{
int id;
String name;
int age;
public Student(){
}
public Student(int id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void setId(){
this.id = id;
}
public void setName(){
this.name = name;
}
public void setAge(){
this.age = age;
}
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
@Override
public String toString(){
return "Student{"+
"id='"+ id + '\''+
"name='"+ name + '\''+
",age="+age+
'}';
}
}
public class test {
public static void main(String[] args){
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1, "D", 23));
list.add(new Student(2, "B", 23));
list.add(new Student(3,"C",36));
list.add(new Student(4,"B",11));
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i).toString());
}
System.out.println("*********************************");
list.sort((o1,o2)->{
return o2.getAge() - o1.getAge() ;
});
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i).toString());
}
}
}
Java实体类(bean)动态排序,Java对操作对象(bean)进行动态排序。_bean 排序_朕得秀的博客-CSDN博客
按年龄和姓名排序
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
class Student implements Comparator<Student>{
int id;
String name;
int age;
public Student(){
}
public Student(int id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void setId(){
this.id = id;
}
public void setName(){
this.name = name;
}
public void setAge(){
this.age = age;
}
@Override
public int compare(Student o1, Student o2){
return o1.getAge() - o2.getAge();
}
@Override
public String toString(){
return "Student{"+
"id='"+ id + '\''+
"name='"+ name + '\''+
",age="+age+
'}';
}
}
public class test {
public static void main(String[] args){
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1, "D", 23));
list.add(new Student(2, "B", 23));
list.add(new Student(3,"C",36));
list.add(new Student(4,"B",11));
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i).toString());
}
System.out.println("*********************************");
list.stream().sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getName)).forEach(System.out::println);
}
}