1、首先新建测试的实体类(People类):
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data @NoArgsConstructor @AllArgsConstructor @ToString public class People { private Integer id; private String name; private Integer age; }
2、开始测试,代码如下:
import com.jieku.pojo.People; import org.junit.Test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class TestList { @Test public void testSortList(){ People p1 = new People(101,"a",19); // 准备数据 People p2 = new People(103,"c",13); People p3 = new People(102,"b",14); People p4 = new People(104,"d",15); People p5 = new People(105,"d",15); List<People> ps = new ArrayList<>(); // 新建List ps.add(p1); // 往List中放值 ps.add(p2); ps.add(p3); ps.add(p4); ps.add(p5); System.out.println("没有进行年龄排序前:"); for (People p : ps) { System.out.println(p); } // 使用Collections工具类的sort方法,重写其compare方法 Collections.sort(ps, new Comparator<People>() { @Override public int compare(People o1, People o2) { // -1为正序(从大到小) // 1为倒序(从小到大) // 大的在前 if(o1.getAge() > o2.getAge()){ // 如果o1的年龄比o2大,则o1排前面 return -1; }else if(o1.getAge() == o2.getAge()){ return 0; }else{ // 小的在后 return 1; } } }); System.out.println("按照年龄排序后----------------------"); for (People p : ps) { System.out.println(p); } System.out.println("按照编号排序后---------------------使用lambda"); Collections.sort(ps, (o1, o2) -> { // 按照id的正序 if(o1.getId() > o2.getId()){ // id大的排最后 return 1; }else if(o1.getId() == o2.getId()){ return 0; }else{ // 否则,id小的排最前面 return -1; } }); // 打印排序后的结果 for (People p : ps) { System.out.println(p); } } }
3、测试结果如下:
至此,测试完成!