您的位置:首页 > 职场人生

黑马程序员———TreeSet两种排序方式

2015-07-29 20:23 471 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------

TreeSet对元素进行排序的方式一: 

让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。

示例:

import java.util.Comparator;

import java.util.Iterator;

import java.util.TreeSet;

//创建了一个根据Person类的name进行排序的比较器。

class ComparatorByName implements Comparator{

public int compare(Object o1,Object o2){

Person p1 = (Person)o1;

Person p2 = (Person)o2;

int temp = p1.getName().compareTo(p2.getName());

return temp == 0?p1.getAge()-p2.getAge() : temp;

}

}

public class TreeSetDemo{

public static void main(String[] args){

TreeSet ts = new TreeSet(new ComparatorByName());

//以Person对象年龄进行从小到大的排序

ts.add( new Person("zhangsan" ,28));

ts.add( new Person("wangwu" ,23));

ts.add( new Person("lisi" ,21));

ts.add( new Person("zhouqi" ,29));

ts.add( new Person("zhaoliu" ,25));

Iterator it = ts.iterator();

while(it.hasNext()){

Person p = (Person)it.next();

System.out.println(p.getName() + ":" + p.getAge());

}

}

}

复制代码

TreeSet集合第二种排序方式:

让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。将该类对象作为参数传递给TreeSet集合的构造函数。

示例2:

import java.util.Comparator;

import java.util.Iterator;

import java.util.TreeSet;

public class TreeSetTest{

public static void main(String[] args){

TreeSet ts = new TreeSet(new ComparatorByLen());

ts.add( "aaaa");

ts.add( "zz");

ts.add( "nbag");

ts.add( "cba");

ts.add( "abc");

Iterator it = ts.iterator();

while(it.hasNext()){

        System.out.println(it.next());

}

}

}

class ComparatorByLen implements Comparator{

public int compare(Object o1,Object o2){

String s1 = (String)o1;

String s2 = (String)o2;

int temp = s1.length() - s2.length();

return temp == 0?s1.compareTo(s2):temp;

}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员 android