1. 程式人生 > >java中如何高效的判斷陣列中是否包含某個元素---

java中如何高效的判斷陣列中是否包含某個元素---

package zaLearnpackage;

import org.apache.commons.lang3.ArrayUtils;

import java.util.Arrays;

import java.util.HashSet;

import java.util.Set;

//檢查陣列是否包含某個值的方法

public class TestArray {

//使用List

public static boolean useList(String[] arr,String targetValue){

return Arrays.asList(arr).contains(targetValue);

}

//使用Set

public static boolean useSet(String[] arr,String targetValue){

Set<String> set=new HashSet<String>(Arrays.asList(arr));

return set.contains(targetValue);

}

//使用迴圈判斷

public static boolean useLoop(String[] arr,String targetValue){

for(String s:arr){

if(s.equals(targetValue))

return true;

}  

return false;

}

//查詢有序陣列中是否包含某個值的用法

public static boolean useArraysBinarySearch(String[] arr,String targetValue){

int a=Arrays.binarySearch(arr, targetValue);

if(a>0)

return true;

else

return false;

}

//使用ArrayUtils

public static boolean useArrayUtils(String[] arr,String targetValue){

return ArrayUtils.contains(arr,targetValue);

}

public static void main(String[] args) {

String[] arr=new String[]{"CD","BC","EF","DE","AB","JK"};

//use list

long startTime=System.nanoTime();

for(int i=0;i<100000;i++){

useList(arr, "A");

}

long endTime=System.nanoTime();

long duration=endTime-startTime;

System.out.println("useList:"+duration/1000000);

//use set

long startTime2=System.nanoTime();

for(int i=0;i<100000;i++){

useSet(arr, "A");

}

long endTime2=System.nanoTime();

long duration2=endTime2-startTime2;

System.out.println("useSet:"+duration/1000000);

//use loop

long startTime3=System.nanoTime();

for(int i=0;i<100000;i++){

useLoop(arr, "A");

}

long endTime3=System.nanoTime();

long duration3=endTime3-startTime3;

System.out.println("useLoop:"+duration/1000000);

//use Arrays.binarySearch()

long startTime4=System.nanoTime();

for(int i=0;i<100000;i++){

useArraysBinarySearch(arr, "A");

}

long endTime4=System.nanoTime();

long duration4=endTime4-startTime4;

System.out.println("useArraysBinarySearch:"+duration/1000000);

}

}

/*

* 顯然,使用一個簡單的迴圈方法比使用任何集合都更加高效。許多開發人員為了方便,都使用第一種方法,但是他的效率也相對較低。因為將陣列壓入Collection型別中,首先要將陣列元素遍歷一遍,然後再使用集合類做其他操作。

*/

相關推薦

Java高效判斷陣列是否包含某個元素

如何檢查一個數組(無序的)是否包含一個特定的值呢?這是一個在Java中經常用到的並且非常有用的操作。本文將分析幾種常見用法及其時間成本。1、使用 ava.util.Arrays.asList(arr)

Java如何高效判斷陣列是否包含某個元素

如何檢查一個數組(無序)是否包含一個特定的值?這是一個在Java中經常用到的並且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。在投票比較高的幾個答案中給出了幾種不同的方法,但是他們的時間複雜度也是各不相同的。本文將分析

java如何高效判斷陣列是否包含某個特定的值

四種不同方式檢查陣列是否包含某個值 使用List: public static boolean useList(String[] arr, String targetValue) {

判斷js陣列包是否包含某個元素

要判斷陣列中是否包含某個元素,從原理來來說,就是遍歷整個陣列,然後判斷是否相等,我們來造個輪子,名字就山寨PHP的陣列函式in_array() Array.prototype.in_array = function(e) { for(i=0;i<this.length;

Java如何高效判斷陣列是否包含某個元素

如何檢查一個數組(無序)是否包含一個特定的值?這是一個在Java中經常用到的並且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。在投票比較高的幾個答案中給出了幾種不同的方法,但是他們的時間複雜度也是各不相同的。本文將分析幾種常見用法

java如何高效判斷陣列是否包含某個元素---

package zaLearnpackage; import org.apache.commons.lang3.ArrayUtils; import java.util.Arrays; import java.util.HashSet; import java.uti

Java如何高效判斷數組是否包含某個元素

clas AC ray 而且 一個 nan 使用 一個數 component 如何檢查一個數組(無序)是否包含一個特定的值?這是一個在Java中經常用到的並且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。在投票比較高的幾個答案中給出了

java如何判斷陣列是否包含元素

有兩種方法可以判斷陣列是否包含元素: 方法1, 將陣列轉換為list,然後使用list的contains方法來判斷: Arrays.asList(...).contains(...) 方法2,遍歷陣列判斷: publicstatic<T>boolean c

Query判斷陣列是否包含某個元素

JQuery判斷陣列中是否包含某個元素使用$.inArray("js", arr); var arr = [ "xml", "html", "css", "js" ];   $.in

獲取表格列值時,空格符也會加進去,導致判斷陣列是否包含列值時會返回false

//初始化已選優惠券編碼 var discountTbody=document.getElementById('discountTbody'); var discountRows=discountTbody.rows; var selectCouponList=[]; console.l

判斷陣列是否包含元素判斷字串是否包含某字串

let arr = [1, 2, 3, 4]; if (arr.indexOf('1') > -1) {}    //判斷1是否在陣列arr中,true=是   let str = string; if (str.indexOf('t') !== -1) {}&nb

node js 判斷陣列是否包含某個

判斷陣列中是否包含某個值這裡有四種方法。 用的測試資料: let arr=["a","b","c"]; let arr2={"a":"aaa","b":"bbb","c":"ccc"}; in判斷是否在陣列的key裡 in操作符針對的是key,而非value。而對於普通的一

判斷陣列是否包含某個物件

要想比較需要重寫-isEqual:和-hash 當判斷anObject是否在當前的NSArray中的時候,是通過呼叫isEqual:這個方法來判斷的,isEqual:本質是在比較兩個物件的hash值 @interface Person @property NSStrin

java 劍指offer 第一題:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

我用了三種解法,全部都可以在牛客網上通過。 第一種解法是最簡單的,遍歷整個二維陣列找那個整數; 第二種和第三種都是根據二維陣列有序的特性進行查詢,第二種方法是從左下角開始查詢,大於左下角刪除一行,小於左下角刪除一列;第三種是從右上角開始查詢,大於右上角刪除一行,小於右上角的

Java 一個二維陣列,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。判斷陣列是否含有某個整數。

開始刷牛客題目:思路:題目已知:二維陣列由上到下,由左到右遞增的規律,那麼選取右上角(或者左下角)的元素a[row][col]與target進行比較,當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,即col--;當target大於元素

java實現一個二維陣列,每一行從左到右遞增,每一列從上到下遞增,輸入一個二維陣列和一個整數,判斷陣列是否有該整數

/** * 給定二維陣列,尋找key值 */public class FindKey { public static boolean findKey(int[][] arr,int key) { if (arr == null) {

判斷陣列是否包含重複數字

給定一個長度為N的陣列,其中每個元素的取值範圍都是1到N。判斷陣列中是否有重複的數字。(原陣列不必保留) 方法1.對陣列進行排序(快速,堆),然後比較相鄰的元素是否相同。時間複雜度為O(nlogn),空間複雜度為O(1)。方法2.使用bitmap方法。定義長度為N/8的ch

遞迴方法判斷陣列元素是否有序(Java實現)

import java.util.Scanner; class IsSort { public int isArrayInSortedOrder(int[] a, int index) { if (index == 1) {

java去除兩個陣列相同的元素

import java.util.*; /** * 陣列去重 * <p> * Created by Cheung on 2016/4/14. */ public class Test01 { public static void main(String[] args)

劍指offer——判斷陣列出現次數過半的數值

根據題目,主要解決兩個問題,一個是判斷出現陣列出現的次數,二是輸出出現次數過半的數值,無則返回0。根據這種情況,腦中第一個出現的就是用字典解決,判斷value,輸出key。 class Solution: def MoreThanHlafNum_Solution(self,number