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

运行结果:

输出:

查找的元素在数组中的索引。

查找的第1个目标元素10,它在数组中的索引为3;

查找的第2个目标元素666,它不存在于数组中,所以返回-1。

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

  1. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  2. 算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)

    上篇博客我们详细的介绍了两种经典的最小生成树的算法,本篇博客我们就来详细的讲一下最短路径的经典算法----迪杰斯特拉算法.首先我们先聊一下什么是最短路径,这个还是比较好理解的.比如我要从北京到济南,而 ...

  3. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){ if ( ...

  4. 数据结构与算法--最短路径之Bellman算法、SPFA算法

    数据结构与算法--最短路径之Bellman算法.SPFA算法 除了Floyd算法,另外一个使用广泛且可以处理负权边的是Bellman-Ford算法. Bellman-Ford算法 假设某个图有V个顶点 ...

  5. 数据结构与算法--最短路径之Floyd算法

    数据结构与算法--最短路径之Floyd算法 我们知道Dijkstra算法只能解决单源最短路径问题,且要求边上的权重都是非负的.有没有办法解决任意起点到任意顶点的最短路径问题呢?如果用Dijkstra算 ...

  6. 数据结构与算法--最短路径之Dijkstra算法

    数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...

  7. 数据结构与算法--最小生成树之Kruskal算法

    数据结构与算法--最小生成树之Kruskal算法 上一节介绍了Prim算法,接着来看Kruskal算法. 我们知道Prim算法是从某个顶点开始,从现有树周围的所有邻边中选出权值最小的那条加入到MST中 ...

  8. 数据结构与算法--最小生成树之Prim算法

    数据结构与算法--最小生成树之Prim算法 加权图是一种为每条边关联一个权值或称为成本的图模型.所谓生成树,是某图的一棵含有全部n个顶点的无环连通子图,它有n - 1条边.最小生成树(MST)是加权图 ...

  9. hdu 3336:Count the string(数据结构,串,KMP算法)

    Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. 每周一道数据结构(四)A*算法&博弈树α-β剪枝

    A*算法/博弈树 前阵子考试学了A*算法.博弈树和回溯,自己真是愚蠢至极,根本没就搞明白这些,所以对于这些算法问道的话就不能说清楚,也记不住,所以才有了这篇笔记.在这里感谢面试我的那位工程师~~ A* ...

随机推荐

  1. vscode设置终端主题,设置终端选中颜色

    vscode定义主题色官网: https://code.visualstudio.com/api/references/theme-color#integrated-terminal-colors 问 ...

  2. SqlServer 不能收缩 ID 为 %s 的数据库中 ID 为 %s 的文件,因为它正由其他进程收缩或为空。

    SQLServer数据库通常都不建议进行SHRINKFILE操作,因为SHRINKFILE不当会造成一定的性能问题. 但是当进行了某些操作(例如某个超大的日志类型表转成分区表切换了数据文件),数据库某 ...

  3. 关于TIdTCPClient的几种方法

    关于TIdTCPClient的几种方法 收藏  其实Indy比较简单,但是可以提供的方法太多了.我找了很久,才搞明白. 比方说这个读取缓冲区的数据,就有很多种方法.相对于TTcpClient的几种方法 ...

  4. IE浏览器下bootStrap form-control input输入框不显示兼容性问题

    问题背景 采用了如下代码. 主要时bootstrap 搜索框. 再IE11下表现出 input 明明 value有值,但是显示不出来的问题. 排查发现form-control样式去后功能正常,但是样式 ...

  5. Nginx版本。

    Nginx官网提供了三个类型的版本Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版Stable version:最新稳定版,生产环境上建议使用的版 ...

  6. Blog作业02

    目录 前言 设计与分析 踩坑心得 改进建议 总结 前言 这三次作业的题目数量虽然增多,但是在题量加大的同时,这三次作业集的难度也相应的下去了,难度降低的同时也保证了作业集题目的质量.这三次的作业的知识 ...

  7. WEB开发日志1

    2020/6/11 23:23 今天做系统时,用到二级菜单,菜单下方放了一个<iframe>标签,但二级菜单的菜单项太多,导致一部分菜单项被<iframe>覆盖,从而无法再选中 ...

  8. XML的定义以及XML的编写

     什么是XML? 定义 1. XML 是 EXtensible Markup Language 这个单词的简写,中文意思就是:可扩展标记语言. a)可扩展:html 标签是预先定义好的,不能任意定义, ...

  9. CH573 CH582 CH579外设ADC例程讲解

    在adc的例程中共有六种AD测量,1.温度测量,2.单通道测量,3.DMA单通道测量,4.差分通道测量,5.触摸按键测量,6.中断方式单通道测量,接下来我们逐一描述. 粗调:粗调使得用0db测量VIN ...

  10. DVWA-XSS (Stored) 存储型XSS

    存储型XSS,顾名思义,就是会传入数据库,长久的使用,常见为留言板,用户信息资料. LOW 审计源码 <?php // 是否提交 btnSign if( isset( $_POST[ 'btnS ...