扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性查找法

1、算法描述

在数组中逐个查找元素,即遍历。

2、上一篇文的实现结果

扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法中,我们实现了如下代码:

package com.mosesmin.datastructure.week01.chap02; /**  * @Misson&Goal 代码以交朋友、传福音  * @ClassName LinearSearch03  * @Description TODO  * @Author MosesMin  * @Date 2023/4/13  * @Version 1.0  */ public class LinearSearch03 {      private LinearSearch03(){}     public static int search(int [] data,int target){         for (int i = 0; i < data.length; i++)             if (data[i] == target)                 return i;         return -1;     }      public static void main(String[] args) {         int [] data = {1,18,22,10,35};         int res = LinearSearch03.search(data,10);         System.out.println(res);          int res2 = LinearSearch03.search(data,666);         System.out.println(res2);     } } 

3、上一篇的实现结果代码实现

之前实现的局限:
只支持int型。


需求:
支持所有的Java基本数据类型以及自定义的类类型。


很简单,很多语言都有这个处理多种数据类型的机制,这种机制叫做——泛型。

Java泛型讲解
泛型—— 不可以是基本数据类型,只能是类对象
Java中的8种基本数据类型
boolean、byte、char、short、int、long、float、double

完整的支持泛型的代码实现:

package com.mosesmin.datastructure.week01.chap02;  /**  * @Misson&Goal 代码以交朋友、传福音  * @ClassName LinearSearch03  * @Description TODO  * @Author MosesMin  * @Date 2023/4/13  * @Version 1.0  */ public class LinearSearch04 {      private LinearSearch04(){}     public static <E> int search(E [] data,E target){// 将search方法定义为泛型方法         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 = {1,18,22,10,35};//3、所以这里的解决方法是,将int修改为Integer         //int res = LinearSearch04.search(data,10);// 1、这里报错了,因为Java中泛型只能接受类对象,不能接受基本数据类型         //此时,这里的参数10已经被JVM从int类型的10自动转换为Integer类型的10了,所以不再报错         int res = LinearSearch04.<Integer>search(data,10); //Java7以前需要加上<Integer>这样的泛型限定,Java8以后可以省略         System.out.println(res);         //int res2 = LinearSearch04.search(data,666);// 2、这里报错了,因为Java中泛型只能接受类对象,不能接受基本数据类型         int res2 = LinearSearch04.search(data,666);//此时,这里的参数10已经被JVM从int类型的666自动转换为Integer类型的666了,所以不再报错         System.out.println(res2);     } } 

每个基本数据类型都有对应的包装类
Boolean、Byte、Character、Short、Integer、Long、Float、Double

4、运行结果

输入:泛型的数组data、泛型的待查找元素target

运行结果:
扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性查找法

输出:
查找的元素在数组中的索引。
查找的第1个目标元素10,它在数组中的索引为3;
查找的第2个目标元素666,它不存在于数组中,所以返回-1。

发表评论

评论已关闭。

相关文章