//实体类实现 Comparable接口 进行降序排序 public class TestCompare implements Comparable<TestCompare>{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "TestCompare{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(TestCompare o) { //降序 1,-1返回位置交换升序
//实现comparator接口实现比较器对象 //逻辑与comparable一样 public class TestComparator implements Comparator<TestCompare> { public int compare(TestCompare o1, TestCompare o2) { if(o1.getAge()<o2.getAge()){ return 1; }else if(o1.getAge()==o2.getAge()){ return 0; }else { return -1; } } }
if (this.getAge()<o.getAge()){ return 1; }else if(this.getAge() == o.getAge()){ return 0; }else { return -1; } } }
public class Test_fori { public static void main(String[] args) { TestCompare t = new TestCompare(); TestCompare testCompare1 = new TestCompare(); TestCompare testCompare2 = new TestCompare(); TestCompare testCompare3 = new TestCompare(); testCompare1.setName("cui"); testCompare1.setAge(58); testCompare2.setName("hhh"); testCompare2.setAge(99); testCompare3.setName("hih"); testCompare3.setAge(12); ArrayList<TestCompare> list = new ArrayList<>(); list.add(testCompare1); list.add(testCompare2); list.add(testCompare3); for (TestCompare t1:list ) { System.err.println(t1); } //comparator方式 // Collections.sort(list,new TestComparator()); //comparable方式 Collections.sort(list); System.err.println("================"); for (TestCompare t1:list ) { System.err.println(t1); } }
根据age进行降序排序