一下是几种方法 检查 数组里是否含有某个数值的方法 并给出了时间复杂度
package simpleJava;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Array {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] seven = { "ab", "bc", "cd", "de" };
// 用以测时间复杂度 using List
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useList(seven, "ab");
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("useList: " + duration / 1000000);
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useSet(seven, "ab");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useSet: " + duration / 1000000);
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useLoop(seven, "ab");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useLoop: " + duration / 1000000);
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useArraysBinarySearch(seven, "ab");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useArraysBinarySearch: " + duration / 1000000);
}
// using List
public static boolean useList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
// using set
public static boolean useSet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
// using loop
public static boolean useLoop(String[] arr, String targetValue) {
for (String s : arr) {
if (s.equals(targetValue))
return true;
}
return false;
}
// using
public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if (a > 0)
return true;
else
return false;
}
}