A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小穿钉 于 2015-11-17 10:22 编辑

package cn.set;


import java.util.Iterator;
import java.util.TreeSet;


/**
* TreeSet可以对Set集合的元素进行排序,是不同步的,
* 判断元素的唯一性,就是根据比较方法的返回结果会否为零,如果是零,就不存。
*
* TreeSet排序方式之一:让元素自身具有比较功能(自然排序),元素需要实现comparable接口,重写compareTo方法
*
* @author Administrator
*
*/
public class TreeSetDemo {


        public static void main(String[] args) {
                //创建TreeSet集合,
                TreeSet ts = new TreeSet();
                //调用方法
                treeSetSortDemo(ts);
        }
        /**
         * 对集合遍历后进行排序输出
         */
        public static void treeSetSortDemo(TreeSet ts) {
                //向集合中添加元素
                ts.add(new Worker("小明",23));
                ts.add(new Worker("小红",25));
                ts.add(new Worker("小刚",27));
                ts.add(new Worker("小蓝",13));
                ts.add(new Worker("小花",43));
               
                //对集合进行遍历,输出有顺序的元素
                Iterator it = ts.iterator();
                while(it.hasNext()){
                        //向下强制转换
                        Worker p = (Worker)it.next();
                        System.out.println(p);
                }
               
        }


}

/**
* 创建一个Worker类
* @author Administrator
*
*/
class Worker implements Comparable{
        //私有成员变量
        private String name;
        private int age;
        //构造方法初始化对象
        public Worker(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        //set与get方法
        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;
        }
        //重写toString方法
        @Override
        public String toString() {
                return "名字:"+name+"\t年龄"+age;
        }
        //重写compareTo方法
        @Override
        public int compareTo(Object o) {
                //判断类型
                if(!(o instanceof Worker))
                        throw new ClassCastException("类型错误");
                //向下强制转型
                Worker p = (Worker)o;
                int temp = this.age-p.age;
                return temp==0?this.name.compareTo(p.name):temp;
        }
        
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马