publicstatic
boolean
uselist(string arr, string targetvalue)
publicstatic
boolean
useset(string arr, string targetvalue)
publicstatic
boolean
useloop(string arr, string targetvalue)
return
false
; }
下面的**是錯誤的,之所以列在下面是出於完整性考慮(四種判斷方式),binarysearch()二分查詢只能用於有序陣列。
執行下面程式,你有可能會得到異常結果;
publicstatic
boolean
usearraysbinarysearch(string arr, string targetvalue)
public static void main(string args) ;
// use list
long starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
long endtime = system.nanotime();
long duration = endtime - starttime;
system.out.println("uselist: " + duration / 1000000);
// use set
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("useset: " + duration / 1000000);
// use loop
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("useloop: " + duration / 1000000);
// use arrays.binarysearch()
starttime = system.nanotime();
for (int i = 0; i < 100000; i++)
endtime = system.nanotime();
duration = endtime - starttime;
system.out.println("usearraybinary: " + duration / 1000000);
}執行結果:
uselist: 13
useset: 72
useloop: 5
usearraysbinarysearch: 9
string arr = new string[1000];random s = new
random();
for (int i = 0; i < 1000; i++)
執行結果:
uselist: 112
useset: 2055
useloop: 99
usearraybinary: 12
從測試結果可以看出,使用簡單的迴圈語句比使用任何集合都高效,很大一部分開發人員選擇使用第一種方法(list),但這種方法其實是相對低效的。在使用集合提供的api前,需要把乙個陣列放到集合裡,這需要消耗一定的時間,特別是對於set集合;(注:其實arraylist集合的效能跟普通的迴圈語句差不多,因為對於arraylist,轉換成集合的時候,僅僅是改變了內部的陣列索引,遍歷判斷的時候,跟普通的迴圈語句類似);
如果要使用arrays.binarysearch()方法,前提是陣列要有序,在這個測試demo中,很顯然陣列是無序的,因此不該被使用;
事實上,如果你確實需要高效的去檢查陣列或集合中是否包含某個值,乙個有序列表或者有序樹能把時間複雜度降低到o(log(n)),或者使用雜湊集合
,時間複雜度為o(1);
連線風一樣的碼農:
java中如何判斷String中的內容是否為數字
判斷字串是否是整數 public static boolean isinteger string value catch numberformatexception e 判斷字串是否是浮點數 public static boolean isdouble string value catch numb...
Java中高效的判斷陣列中某個元素是否存在詳解
一 檢查陣列是否包含某個值的方法 使用list public static boolean uselist string arr,string targetvalue 使用set public static boolean useset string arr,string targetvalue 使...
如何判斷是否是陣列
typeof 只能返回object eg a 1,2,3 js提供的方法 a array.isarray a 從建構函式入手 b a instanceof array 從原型入手 c array.prototype.isprototypeof a 根據物件的class 屬性 類屬性 跨原型鏈呼叫to...