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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小穿钉 高级黑马   /  2015-11-17 10:16  /  335 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package GenericDemo;




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


/**
* 泛型演示
* @author Administrator
*
*/
public class GenericDemo_1 {


        public static void main(String[] args) {
                //创建TreeSet集合对象,加入泛型技术,并添加比较器
                TreeSet<Boy> ts = new TreeSet<Boy>(new ComparatorByName());
               
                //集合中添加相应的元素
                ts.add(new Boy("小刚",23));
                ts.add(new Boy("小明",33));
                ts.add(new Boy("王龙",21));
                ts.add(new Boy("李钢",36));
               
                //调用迭代器,获取所有元素
                Iterator<Boy> it = ts.iterator();
                while(it.hasNext()){
                        Boy b = it.next();
                        System.out.println("姓名:"+b.getName()+"   年龄"+b.getAge());
                }
        }


}


/**
* 创建一个Boy类,自身具有按照年龄比较的功能
* @author Administrator
*
*/
class Boy implements Comparable<Boy>{
        //私有化成员变量
        private String name;
        private int age;
        //构造方法
        public Boy(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;
        }
        //重写compareTo方法,元素自身具有按照年龄比较的功能
        @Override
        public int compareTo(Boy b) {//因为传入就是Boy类型,就不需要强制转换类型了。
               
                int temp = this.age-b.age;
                return temp==0?this.name.compareTo(b.name):temp;
        }
       
}


/**
* 创建一个新的比较器,按照名字进行排序
* @author Administrator
*
*/
class ComparatorByName implements Comparator<Boy>{
        //重写compare方法
        @Override
        public int compare(Boy o1, Boy o2) {//比较器已经确定传入的类型,所以不需要强转了
                int temp = o1.getName().compareTo(o2.getName());
                return temp==0?o1.getAge()-o2.getAge():temp;
        }
       
       
}

5 个回复

倒序浏览
三元运算用的很好啊;
回复 使用道具 举报
讨厌三元运算。。。要在好好看看了
回复 使用道具 举报
泛型刚听挺简单,结果老师噼里啪啦讲一堆就懵了
回复 使用道具 举报
顶顶顶顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马