使用泛型(数据结构)

接上一篇,为了解决搜索不同数据类型的问题,引入泛型方法。

public class LinearSearch {
    private LinearSearch(){}

    public static <E>int search(E[] data, E target){  //泛型方法

        for(int i = 0; i < data.length; i++)
             if (data[i].equals(target) )    //对结果进行比较,修改为equals方法
                 return i;

        return -1;
    }
    public static void main (String[] args) {
        Integer[] data = {24, 18, 12, 9, 16, 66, 32, 4};
        //LinearSearch ls = new LinearSearch();

        int res = LinearSearch.<Integer>search(data, 16);
        System.out.println(res);

        int res2=LinearSearch.<Integer>search(data,666);
        System.out.println(res2);
    }
}

设计一个student 类

public class LinearSearch {
    private LinearSearch(){}

    public static <E>int search(E[] data, E target){

        for(int i = 0; i < data.length; i++)
             if (data[i].equals(target) )//实现的是类对象中的地址,所以没办法比较
                 return i;

        return -1;
    }
    public static void main (String[] args) {
        Integer[] data = {24, 18, 12, 9, 16, 66, 32, 4};//泛型只能接受类对象,不能是基本数据类型。
        //LinearSearch ls = new LinearSearch();

        int res = LinearSearch.<Integer>search(data, 16);//自动转换包装类;u8中可以省略<Integer>
        System.out.println(res);

        int res2=LinearSearch.<Integer>search(data,666);
        System.out.println(res2);

        Student[] students = {new Student("Alice"),
                              new Student("Bobo"),
                              new Student("Charles")};
        Student bobo = new Student("bobo");

        int res3 =LinearSearch.search(students,bobo);
        System.out.println(res3);
    }
}
public class Student {
    private String name;//一个成员变量
    public Student(String name) {//这个类的成员函数
        this.name = name;
    }
    @Override
    public boolean equals(Object student ){ //覆盖equals
        if (this == student)   
            return true;

        if (student == null)
            return false;

        if (this.getClass()!=student.getClass())
          return false;

       Student another  =(Student)student ;   
       return this.name.toLowerCase().equals(another.name.toLowerCase());




    }//equals 是object类的父类,对原来的进行覆盖
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值