一、前言
对于对象序列集合经常需要根据条件(字符长度,年龄大小等)来排序,然后对有序的数据再进行依次处理,我们可以借助JDK提供的java.util.Collections公共结合处理类Collections.sort方式或者通过将序列集合转换为TreeSet来处理
二、代码示例
第一种方式
通过Collections.sort方式将字符序列按照字符从多到少进行排序,示例如下
public static void main(String[] args) {@b@ @b@ List<String> sl=new ArrayList<String>();@b@ sl.add("abcde");@b@ sl.add("abc");@b@ sl.add("ab");@b@ sl.add("abcd");@b@ @b@ Collections.sort(sl, new Comparator<String>() {@b@ @Override@b@ public int compare(String s1, String s2) {@b@ return s2.length() - s1.length();@b@ }@b@ });@b@ @b@ for(String s:sl){@b@ System.out.println(s);@b@ }@b@ @b@ }
运行结果如下
abcde@b@abcd@b@abc@b@ab
第二种方式
通过JDK本身提供有序序列集合类来实现如TreeSet,同样实现上面字符排序,代码如下
public static void main(String[] args) {@b@ TreeSet<String> sl=new TreeSet<String>();@b@ sl.add("abcde");@b@ sl.add("abc");@b@ sl.add("ab");@b@ sl.add("abcd");@b@ @b@ int i=sl.size();@b@ while(--i>-1){@b@ System.out.println(sl.pollLast());@b@ }@b@ }
运行结果和上面一致,对于自定义类集合进行排序,需要先实现java.lang.Comparable<T>接口,同时实现接口compareTo方法,举例如下(根据人的年龄进行排优先级)
public class Persion implements Comparable<Persion> {@b@ @b@ private String name; @b@ @b@ private int age;@b@@b@ @Override@b@ public int compareTo(Persion paramT) {@b@ // TODO Auto-generated method stub@b@ return this.getAge()-paramT.getAge();@b@ }@b@ @b@ public String getName() {@b@ return name;@b@ }@b@@b@ public void setName(String name) {@b@ this.name = name;@b@ }@b@@b@ public int getAge() {@b@ return age;@b@ }@b@@b@ public void setAge(int age) {@b@ this.age = age;@b@ }@b@@b@}