package net.algchallenge;
import java.util.Arrays;
/**
* 判斷數組中是否包含某個元素的方法
* //注:Java有兩種數據類型,基本數據類型和引用數據類型,判斷基本數據類型是否相等用==,判斷引用數據類型是否相等用equals
*/
public class ArrayQuery {
public static void main(String[] args) {
//第一種利用循環遍歷進行操作,如果數組中存在元素和要查找的元素相等則是數組中包含這個元素:
//支持多種類型的查找,可以自己更改類型
int[] arr1 = {1, 7, 5, 9, 7};
//(1):
boolean ifContain = false;
int searchedNum = 7;
for (int i = 0; i < arr1.length; i++){
if(arr1[i] == searchedNum){
ifContain = true;
break;
}
}
System.out.println(ifContain);
/*//(2):
int searchedNum2 = 7;
boolean ifContain = false;
for(int i : arr1){
if (i == searchedNum2){
ifContain = true;
break;
}
}*/
//第二種:二分查找,應用於數字類型
//先sort排序;參數在數組中則返回參數在數組的索引,否則返回負數
int[] arr2 = {1, 7, 5, 9, 7};
Arrays.sort(arr2);
//採用Arrays類的sort方法排序數組,默認是升序排列,如果要實現降序排列,可以利用Collections.reverseOrder()作爲sort方法的第二參數,不過需要將數組類型改爲其對應的封裝類
int index = Arrays.binarySearch(arr2, 3);
System.out.println(index);
//第三種:
//利用String的contains方法,方法參數要求是字符序列
String[] arr3 = {"H", "e", "l", "l", "o"};
boolean ifContain2 = Arrays.toString(arr3).contains("e");
System.out.println(ifContain2);
//第四種:
//轉換爲list,然後利用List的contains方法,方法參數類型爲Object類型
Object[] arr4 = {1, 0.0, 'a', false, "Hello"};
boolean ifContain3 = Arrays.asList(arr4).contains(1);
System.out.println(ifContain3);
}
}
運行結果: