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