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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊永标 中级黑马   /  2013-1-10 14:46  /  983 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.javastudy.p6.generic.demo;
  2. import java.util.*;
  3. public class Generic {
  4.         public static void main(String[] args)
  5.         {
  6.                 MyTreeSet<Person> p=new MyTreeSet<Person>(new GenericDemo<Person>(){

  7.                         @Override
  8.                         public int compar(Person e1, Person e2) {
  9.                                 int temp=e1.getName().compareTo(e2.getName());
  10.                                 return temp==0?e1.getOld()-e2.getOld():temp;
  11.                         }});
  12.                 p.add(new Person("a张三",30));
  13.                 p.add(new Person("c李四",10));
  14.                 p.add(new Person("f王五",80));
  15.                 p.add(new Person("d赵六",25));
  16.                 p.add(new Person("e刘七",60));
  17.                 p.add(new Student("g小明同学",12));
  18.                 p.add(new Student("h小张同学",15));
  19.                 p.add(new Student("s小杨同学",8));
  20.                 p.add(new Student("z小金同学",13));
  21.                 Iterator<Person> ip=p.getIterator();
  22.                 while(ip.hasNext())
  23.                 {
  24.                         Person p1=ip.next();
  25.                         System.out.println(p1.getName()+" -"+p1.getOld());
  26.                 }
  27.         }
  28. }
  29. interface GenericDemo<E>
  30. {
  31.         public int compar(E e1,E e2);
  32. }
  33. class MyTreeSet<E>
  34. {
  35.         LinkedList<E> t=new LinkedList<E>();
  36.         GenericDemo<? super E> comparator=null;
  37.         public MyTreeSet(GenericDemo<? super E> com)
  38.         {
  39.                 this.comparator=com;
  40.         }
  41.         public void add(E e)
  42.         {
  43.                 if(t.size()>0)
  44.                 {
  45.                         for(int i=0;i<t.size();i++)
  46.                         {
  47.                                 int temp=comparator.compar(e, t.get(i));
  48.                                 if(temp<0)
  49.                                 {
  50.                                         t.add(i,e);
  51.                                         return;
  52.                                 }
  53.                         }
  54.                         t.add(e);
  55.                 }
  56.                 else
  57.                 {
  58.                         t.add(e);
  59.                 }
  60.         }
  61.         @Override
  62.         public String toString() {
  63.                 // TODO Auto-generated method stub
  64.                 return t.toString();
  65.         }
  66.         public Iterator<E> getIterator()
  67.         {
  68.                 return t.iterator();
  69.         }
  70. }
  71. class Person
  72. {
  73.         String name=null;
  74.         int old=0;
  75.         public Person(String name, int old) {
  76.                 super();
  77.                 this.name = name;
  78.                 this.old = old;
  79.         }
  80.         public String getName() {
  81.                 return name;
  82.         }
  83.         public int getOld() {
  84.                 return old;
  85.         }
  86. }
  87. class Student extends Person
  88. {

  89.         public Student(String name, int old) {
  90.                 super(name, old);
  91.                 // TODO Auto-generated constructor stub
  92.         }
  93.        
  94. }
复制代码
学习泛型之后,模拟出业的TreeeSet

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
不错  继续努力哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马