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。