当前位置:   article > 正文

java对集合进行排序的两种方法

java中用哪两种方式实现集合的排序?
有两种方式可以进行集合排序 :
[size=large]1. 为集合中对象的所属类实现了 java.lang.Comparable 接口[/size]

对需要排序的person类实现Comparable接口,实现接口的CompareTo方法来定义排序的规则
public class Person implements Comparable{    private final int id;    private String name;    private int age;    public Person(int id,String name,int age){           this.id = id;           this.name = name;           this.age = age;    }    public int getId(){           return id;    }    public void setName(String name){           this.name = name;    }    public String getName(){           return name;      }    public void setAge(int age){           this.age = age;    }    public int getAge(){           return age;         }    @Override    public String toString(){           return "Id: " + id + "/tName: " + name + "/tAge: " + age;    }       @Override    public int compareTo(Object o){      // 实现 Comparable 接口的抽象方法,定义排序规则           Person p = (Person)o;           return this.id - p.id;                      // 升序排列,反之降序    }    @Override    public boolean equals(Object o){     //equals           boolean flag = false;           if(o instanceof Person){                  if(this.id == ((Person)o).id)                         flag = true;           }           return false;              }    }

测试类
import java.util.TreeSet;import java.util.Iterator;public class TestComparable{       public static void main(String[] args) {              TreeSet ts = new TreeSet();              ts.add(new Person(1003," 张三 ",15));              ts.add(new Person(1008," 李四 ",25));              ts.add(new Person(1015," 王五 ",73));              ts.add(new Person(1001," 赵六 ",49));              Iterator it = ts.iterator();              while(it.hasNext()){                     Person employee = (Person)it.next();                     System.out.println(employee);                   }       }}


[size=large]2. 为集合指定比较器 java.lang.Comparator 的实现类[/size]
需要排序的类
//需要排序的类的对象public class Person{    private final int id;    private String name;    private int age;    public Person(int id,String name,int age){           this.id = id;           this.name = name;           this.age = age;    }    public int getId(){           return id;    }    public void setName(String name){           this.name = name;    }    public String getName(){           return name;     }    public void setAge(int age){           this.age = age;    }    public int getAge(){           return age;     }    @Override    public String toString(){           return "Id: " + id + "/tName: " + name + "/tAge: " + age;    } }//创建person类的比较器package ClassTest;import java.util.Comparator;public class PersonComparetor implements Comparator<Person>{    public int compare(Person o1, Person o2) {// return o1.getId()-o2.getId(); //升序        return o2.getId()-o1.getId(); //降序    }}//测试类public class TestComparable {    public static void main(String[] args) {        List<Person> ts=new ArrayList<Person>();        ts.add(new Person(1003," 张三 ",15));        ts.add(new Person(1008," 李四 ",25));        ts.add(new Person(1015," 王五 ",73));        ts.add(new Person(1001," 赵六 ",49));        PersonComparetor pc=new PersonComparetor();        Collections.sort(ts, pc);        for(Person p:ts){            System.out.println(p);        } }}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/440063
推荐阅读
相关标签
  

闽ICP备14008679号