黑马程序员技术交流社区

标题: 如何把Set集合的数据进行强行逆转排序 [打印本页]

作者: 周洋    时间: 2012-3-30 15:53
标题: 如何把Set集合的数据进行强行逆转排序
有一个Set集合,现在是按年龄从小到大排序,现在想按年龄从大到小排序,请问用强行逆转排序怎么实现?
Set<Student> stus = new TreeSet<Student>();
suts.add(new Student("张三",18))
suts.add(new Student("大七",22))
suts.add(new Student("周六",24))
suts.add(new Student("小四",28))
suts.add(new Student("王五",35))
作者: 刘晓康    时间: 2012-3-30 16:09
可以使用集合的扩展类Collections的reerseOrder方法,此方法的定义如下:
static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
         此方法 返回一个比较器,它强行逆转指定比较器的顺序。
你上面的代码可以写成如下形式:
Set<Student> stus = new TreeSet<Student>();
suts.add(Collections.reverseOrder(new Student("张三",18)));
suts.add(Collections.reverseOrder(new Student("大七",22)));
suts.add(Collections.reverseOrder(new Student("周六",24)));
suts.add(Collections.reverseOrder(new Student("小四",28)));
suts.add(Collections.reverseOrder(new Student("王五",35)) );

作者: yangshang1    时间: 2012-3-30 16:32

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;


public class ComparableTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
        Set<Stu> s=new TreeSet<Stu>(Collections.reverseOrder());
        s.add(new Stu("liumeng",11));
        s.add(new Stu("asd",134));
        s.add(new Stu("asf",34));
        Iterator<Stu> iterator=s.iterator();
        while(iterator.hasNext())
        {
                Stu ss=iterator.next();
                System.out.println(ss.getName());
        }
        }

}
class Stu implements Comparable<Stu>
{
        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;
        }
        private String name;
        public Stu(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        private int age;
       
        @Override
        public int compareTo(Stu o) {
                int num=this.name.compareTo(o.name);
                if(num==0)
                        return this.age-o.age;
                return num;
               
        }
       
       
       
       
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2