我有一個名爲「bob」的數組,其中包含值。Android - 檢查數組中是否存在值
String[] bob = { "this", "is", "a", "really", "silly", "list" };
如何知道名爲bob的數組中是否存在「愚蠢」的值而未進行迭代?
我有一個名爲「bob」的數組,其中包含值。Android - 檢查數組中是否存在值
String[] bob = { "this", "is", "a", "really", "silly", "list" };
如何知道名爲bob的數組中是否存在「愚蠢」的值而未進行迭代?
您可以使用List#contains
方法。爲此,您需要將數組轉換爲列表。您可以使用Arrays#asList()
方法FOT說:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
if (Arrays.asList(bob).contains("silly")) {
// true
}
在這種情況下,您可以將'Arrays.asList(bob)'更改爲'Collections.singletonList(bob)'=更少的內存使用量。 – 2016-07-07 16:16:57
轉換陣列使用靜態Arrays.asList(T)
列出,並與List.contains(Object)
檢查,以檢查是否重新調整集合中存在的對象。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));
然而,傳統的方法是迭代數組,並使用equals()檢查每個元素。
如果你要查了很多,你可能會發現它更有效地使用一個HashSet
:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");
下面是一個簡單的方法來做到這一點:
ArrayList list = new ArrayList(Arrays.asList(bob));
if (list.contains("silly")) {
// my array has silly !
}
的想法是將您的數組轉換爲ListArray對象。 但它會消耗額外的內存,因此在使用它之前確保它是值得的。
編輯
如果你的性能與節約內存後,您可以使用二進制搜索algorthem代替:這樣你就不必分配新對象 :
Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}
如果我搜索「silly1」,它會給我錯誤的結果..它說它存在 – user2065795 2013-02-13 18:48:22
Arrays.binarySearch使用與list.contais .... object.equals(..)中使用的相同的比較方法,所以請使確保你的測試是準確的... – 2013-02-13 19:41:47
這是很重要了解何時首先學習Android開發,您的問題可能只是一個Java問題,並非特定於Android。在這種情況下:) – Richard 2015-02-10 00:03:26