作者热门文章
- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
在数组中逐个查找元素,即遍历.
在 扎实打牢数据结构算法根基,从此不怕算法面试系列之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);
}
}
之前实现的局限: 只支持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 。
输入:泛型的数组data、泛型的待查找元素target 。
运行结果:
输出: 查找的元素在数组中的索引。 查找的第1个目标元素10,它在数组中的索引为3; 查找的第2个目标元素666,它不存在于数组中,所以返回-1.
最后此篇关于扎实打牢数据结构算法根基,从此不怕算法面试系列之004week0102-04使用泛型实现线性查找法的文章就讲到这里了,如果你想了解更多关于扎实打牢数据结构算法根基,从此不怕算法面试系列之004week0102-04使用泛型实现线性查找法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!