2013-02-13 70 views
29

我有一個名爲「bob」的數組,其中包含值。Android - 檢查數組中是否存在值

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 

如何知道名爲bob的數組中是否存在「愚蠢」的值而未進行迭代?

+0

這是很重要了解何時首先學習Android開發,您的問題可能只是一個Java問題,並非特定於Android。在這種情況下:) – Richard 2015-02-10 00:03:26

回答

89

您可以使用List#contains方法。爲此,您需要將數組轉換爲列表。您可以使用Arrays#asList()方法FOT說:

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 

if (Arrays.asList(bob).contains("silly")) { 
    // true 
} 
+2

在這種情況下,您可以將'Arrays.asList(bob)'更改爲'Collections.singletonList(bob)'=更少的內存使用量。 – 2016-07-07 16:16:57

5

轉換陣列使用靜態Arrays.asList(T)列出,並與List.contains(Object)檢查,以檢查是否重新調整集合中存在的對象。

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 
      System.out.println(Arrays.asList(bob).contains("silly")); 

然而,傳統的方法是迭代數組,並使用equals()檢查每個元素。

3

如果你要查了很多,你可能會發現它更有效地使用一個HashSet

String[] bob = { "this", "is", "a", "really", "silly", "list" }; 
Set<String> silly = new HashSet<String>(Arrays.asList(bob)); 
boolean isSilly = silly.contains("silly"); 
2

下面是一個簡單的方法來做到這一點:

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 ! 
} 
+0

如果我搜索「silly1」,它會給我錯誤的結果..它說它存在 – user2065795 2013-02-13 18:48:22

+0

Arrays.binarySearch使用與list.contais .... object.equals(..)中使用的相同的比較方法,所以請使確保你的測試是準確的... – 2013-02-13 19:41:47