黑马程序员技术交流社区

标题: 泛型的简单演示 [打印本页]

作者: 小穿钉    时间: 2015-11-17 10:16
标题: 泛型的简单演示
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;
        }
       
       
}


作者: 石三伢子1    时间: 2015-11-17 11:42
三元运算用的很好啊;
作者: z13561291    时间: 2015-11-17 21:24
讨厌三元运算。。。要在好好看看了
作者: dongran    时间: 2015-11-17 23:09
泛型刚听挺简单,结果老师噼里啪啦讲一堆就懵了
作者: zypt0218    时间: 2015-11-17 23:59
顶顶顶顶




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