用Collections 对List集合进行排序,规则自定义,要求List集合中放入Person对象
方法一:实现Comparable这个接口,重写compareTo()这个方法
Person类代码:
package xes.wangxiao.qa;
public class Person implements Comparable<Person>{
private String name;
private int age;
private int height;
private float weight;
//默认构造方法
public Person() {
}
//带姓名和年龄的构造方法
public Person(String name,int age,int height){
this.name=name;
this.age=age;
this.height=height;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height=height;
}
@Override
public int compareTo(Person o) {
Integer age1=this.getAge();
Integer age2=o.getAge();
if(age1.compareTo(age2)==0) {
Integer height1=this.getHeight();
Integer height2=o.getHeight();
return height1.compareTo(height2);
}else {
return age1.compareTo(age2);
}
}
}
主代码:
package xes.wangxiao.qa;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class testList {
public static void main(String[] args) {
Person niuniu=new Person("牛牛", 18,175);
Person benben=new Person("犇犇", 20,173);
Person kankan=new Person("衎衎", 2,110);
Person honghong=new Person("红红", 30,181);
Person qiangqiang=new Person("强强", 30,175);
List<Person> person=new ArrayList<Person>();
person.add(niuniu);
person.add(benben);
person.add(kankan);
person.add(honghong);
person.add(qiangqiang);
Collections.sort(person);
for(Person p:person) {
System.out.println(p.getName()+":"+p.getAge());
}
}
}
方法二:
Person类代码:
package xes.wangxiao.qa;
public class Person{
private String name;
private int age;
private int height;
private float weight;
//默认构造方法
public Person() {
}
//带姓名和年龄的构造方法
public Person(String name,int age,int height){
this.name=name;
this.age=age;
this.height=height;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height=height;
}
}
主代码:
package xes.wangxiao.qa;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class testList1 {
public static void main(String[] args) {
Person niuniu=new Person("牛牛", 18,175);
Person benben=new Person("犇犇", 20,173);
Person kankan=new Person("衎衎", 2,110);
Person honghong=new Person("红红", 30,181);
Person qiangqiang=new Person("强强", 30,175);
List<Person> person=new ArrayList<Person>();
person.add(niuniu);
person.add(benben);
person.add(kankan);
person.add(honghong);
person.add(qiangqiang);
sort(person);
for(Person p:person) {
System.out.println(p.getName()+":"+p.getAge());
}
}
public static void sort(List<Person> list) {
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person p1,Person p2) {
Integer age1=p1.getAge();
Integer age2=p2.getAge();
if(age1.compareTo(age2)==0) {
Integer height1=p1.getHeight();
Integer height2=p2.getHeight();
return height1.compareTo(height2);
}else {
return age1.compareTo(age2);
}
}
});
}
}