(泛型)FanXingXianDing

本文通过具体的Java代码示例介绍了如何使用泛型来创建具有通用性的比较器和迭代器,展示了如何向TreeSet中添加不同类型的对象并进行排序和遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package jihe;

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

class Person7
{
    private String name;
    Person7(String name)
    {
        this.name=name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

class Student7 extends Person7
{
    Student7(String name)
    {
        super(name);
    }
}

class Worker7 extends Person7
{
    Worker7(String name)
    {
        super(name);
    }

}
class Add7
{
    void stuAdd(){
    TreeSet<Student7> s=new TreeSet<Student7>(new Cp());
    s.add(new Student7("java 01"));
    s.add(new Student7("java 02"));
    s.add(new Student7("java 03"));
    s.add(new Student7("java 04"));
    s.add(new Student7("java 05"));
    /*
    Iterator<Student7> it=s.iterator();
    while(it.hasNext())
    {
        System.out.println("stu: "+it.next().getName());
    }
    */
    Iter(s);
    }
    void worAdd()
    {
        TreeSet<Worker7> w=new TreeSet<Worker7>(new Cp());
        w.add(new Worker7("+++java 01"));
        w.add(new Worker7("+++java 02"));
        w.add(new Worker7("+++java 03"));
        w.add(new Worker7("+++java 04"));
        w.add(new Worker7("+++java 05"));
        /*
        Iterator<Worker7> it=w.iterator();
        while(it.hasNext())
        {
            System.out.println("wor: "+it.next().getName());
        }
        */
        Iter(w);
    }
    public void Iter(TreeSet<? extends Person7> ts)//泛型迭代器,<? extends Person7>如此此迭代器上限为Person7,可以为其子类所用
    {
        Iterator<? extends Person7> it=ts.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next().getName());
        }
    }
}

class Cp implements Comparator<Person7>//泛型比较器,此比较器需要的元素是name,而父类含有,所以直接用父类泛型调用
{                                       //有多个集合时,可以将其要进行比较的元素放在父类,这样泛型后就避免了强制转换
    public int compare(Person7 p1,Person7 p2)
    {
        return p2.getName().compareTo(p1.getName());
    }
}
public class FanXingXianDing {
    public static void main(String[] args) {
        Add7 a=new Add7();
        a.stuAdd();
        a.worAdd();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值