1.我们先创建一个People对象,存放排序的对象,代码如下:
public class People {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public People(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public People() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
2.我们先使用数组进行排序,有两种方法,代码如下:
import java.util.Arrays;
import java.util.Comparator;
public class SortTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
People[] persones = { new People("吴1", 25), new People("吴2", 15), new People("吴3", 45), new People("吴4", 35) };
// 正常方法(高性能)
for (int i = 0; i < persones.length; i++) {
for (int j = i; j < persones.length; j++) {
if (persones[i].getAge() < persones[j].getAge()) {// 升序
People temp = persones[i];
persones[i] = persones[j];
persones[j] = temp;
}
}
}
// 输出结果
for (People people : persones) {
System.out.println(people.toString());
}
System.out.println("---------------------------");
// 高级方法
Arrays.sort(persones, new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
// TODO Auto-generated method stub
return o1.getAge() - o2.getAge();// 升序前面减后面,降序相反
}
});
// 输出结果
for (People people : persones) {
System.out.println(people.toString());
}
System.out.println("---------------------------");
// 使用lambda表达式
Arrays.sort(persones, (People o1,People o2) ->{
return o2.getAge() - o1.getAge();// 降序
});
// 输出结果
for (People people : persones) {
System.out.println(people.toString());
}
}
}
输出结果:
第一种排序使用了两个循环,代码看起来臃肿,难以观看,第二种方法较好,写的也快,第三种是在第二种的基础上再加上lambda表达式写的,这样子的代码看起来更清爽
3.这是List,原理和数组一样,代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<People> persones = new ArrayList<>();
persones.add(new People("吴1", 25));
persones.add(new People("吴2", 45));
persones.add(new People("吴3", 35));
persones.add(new People("吴4", 15));
// 正常方法
Collections.sort(persones, new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
// TODO Auto-generated method stub
return o1.getAge() - o2.getAge();// 升序前面减后面,降序相反
}
});
// 输出结果
for (People people : persones) {
System.out.println(people.toString());
}
System.out.println("---------------------------");
// 使用lambda表达式
Collections.sort(persones, (People o1,People o2) ->{
return o2.getAge() - o1.getAge();// 降序
});
// 输出结果
for (People people : persones) {
System.out.println(people.toString());
}
}
}