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


    1|01、算法描述

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

    2|02、上一篇文的实现结果

    扎实打牢数据结构算法根基,从此不怕算法面试系列之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|03、上一篇的实现结果代码实现

    之前实现的局限:
    只支持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 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.search(data,10); //Java7以前需要加上这样的泛型限定,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|04、运行结果

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

    运行结果:
    mark

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


    __EOF__

    本文作者皿哥的技术人生
    本文链接https://www.cnblogs.com/xlfcjx/p/17324153.html
    关于博主:码农(Android系统定制开发到嵌入式开发均有涉猎、目前从0基础开始系统深入总结嵌入式开发相关技术栈);欢迎各位同行私信交流(本人微信:MosesMin8993),大家一起:学技术、判趋势、拼当下、创未来;交朋友、通爱好、话人生、谈信仰!
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    Linux CentOS7 vim宏操作
    基于STM32的烟雾传感器
    Python基础入门篇【19】--python中的流程控制之循环控制:for循环
    查询资源消耗
    C# XML Helpers实现XML文件操作
    C++面试八股文:什么是空指针/野指针/悬垂指针?
    Llama模型家族之RLAIF 基于 AI 反馈的强化学习(三) RLAIF 的工作原理
    嵌入式操作系统C经典问题
    【LeetCode】11. 盛最多水的容器
    详细介绍Redis RDB和AOF两种持久化方式
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/17324153.html