java 泛型 上限_java中泛型上限,下限应用

import java.util.*;class Person implements Comparable{

String name;intage;

Person(){

name= "";

age= 0;

}

Person(String name,intage){this.name =name;this.age =age;

}publicString toString(){return name + "...." +age;

}public intcompareTo(Person o){if(name.compareTo(o.name)==0)return o.age -age;returno.name.compareTo(name);

}

}class Student extendsPerson{intscore;publicStudent(){super();

}public Student(String name, int age, intscore){super(name, age);this.score =score;

}publicString toString(){return name + "...." + age + "...." + "score: " +score;

}

}class Worker extendsPerson{intsalary;publicWorker(){super();

}public Worker(String name, int age, intsalary){super(name, age);this.salary =salary;

}publicString toString(){return name + "...." + age + "...." + "salary: " +salary;

}

}class ComparatorPerson implements Comparator{public intcompare(Person o1, Person o2){if(o1.name.compareTo(o2.name)==0)return o1.age -o2.age;returno1.name.compareTo(o2.name);

}

}public classTest{public static voidmain(String[] args){

ArrayList arr = new ArrayList();

arr.add(new Person("hujunzheng", 22));

arr.add(new Person("caihaibin", 21));

arr.add(new Person("huangweidong", 22));

ArrayList arr1 = new ArrayList();

arr1.add(new Student("hujunzheng", 22, 500));

arr1.add(new Student("caihaibin", 21, 444));

arr1.add(new Student("huangweidong", 22, 777));

ArrayList arr2 = new ArrayList();

arr2.add(new Worker("789", 22, 500));

arr2.add(new Worker("465", 21, 444));

arr2.add(new Worker("798", 22, 777));//public boolean addAll(Collection extends E> c)//泛型的上限:用于存储的数据//如果不是 extends E> 而只是 那么E的子类型就不能加载进来!因为Collection 和 ArrayList泛型管理的不是同一数据类型//而 extends E> 要求传进来的对象实例管理的泛型只要是 E 或者是 E的子类都行!

arr.addAll(arr1);

arr.addAll(arr2);

Object[] oo= null;

Arrays.sort(oo=arr.toArray());for(Object o : oo)

System.out.println(o);//public TreeSet(Comparator super E> c); 传递的是比较泛型为 E 或者是 E的父类的比较器//在进行 E类型两个数据比较的时候, 用 E类 或者 E类型的父类型进行接收,并使用 ?类型的定义的比较方式!

System.out.println("泛型上限,下限...................................................");

TreeSet tw = new TreeSet(new ComparatorPerson());//E 是 Worker, 传递的是其父类Person的比较器

tw.addAll(arr2);for(Iterator it =tw.iterator(); it.hasNext(); )

System.out.println(it.next());

TreeSet ts= new TreeSet(new ComparatorPerson());//E 是 Student, 传递的是其父类Person的比较器

ts.addAll(arr1);for(Object o : ts.toArray())

System.out.println(o);//上述的Worker 和 Student在TreeSet中排序时使用的比较器都是Person类实现的比较器

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值