2013-02-13 19 views
29

में कोई मान मौजूद है या नहीं, मेरे पास "बॉब" नामक एक सरणी है जिसमें मान हैं।एंड्रॉइड - जांचें कि एक मान

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

मुझे कैसे पता चलेगा कि बॉब नामक सरणी में "मूर्ख" मान मौजूद है या नहीं?

+0

यह महत्वपूर्ण है समझें कि पहली बार एंड्रॉइड डेवलपमेंट सीखना, कि आपका प्रश्न सिर्फ जावा प्रश्न हो सकता है, जो एंड्रॉइड के लिए विशिष्ट नहीं है। यहां कौन सा मामला है :) – Richard

उत्तर

89

आप List#contains विधि का उपयोग कर सकते हैं। इसके लिए आपको अपनी सरणी को एक सूची में बदलने की जरूरत है। आपको लगता है कि फ़ॉट Arrays#asList() विधि का उपयोग कर सकते हैं:

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

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

इस मामले में, आप 'Arrays.asList (बॉब) 'से' संग्रह .singletonList (बॉब) '= कम स्मृति उपयोग को बदल सकते हैं। –

5

स्थिर Arrays.asList(T) का उपयोग कर सूची और List.contains(Object) के साथ जांच एक वस्तु लौटा संग्रह में मौजूद रहने पर जाँच करने के लिए करने के लिए सरणी में कनवर्ट करें।

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

पारंपरिक तरीका हालांकि सरणी पर फिर से चलना होगा और बराबर() का उपयोग करके प्रत्येक तत्व को जांचना होगा।

3

आप इसे एक बहुत की जांच करने जा रहे हैं, तो आप इसे और अधिक कुशल उपयोग करने के लिए एक HashSet मिल सकता है:

ArrayList list = new ArrayList(Arrays.asList(bob)); 
    if (list.contains("silly")) { 
        // my array has silly ! 
      } 

विचार है:

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

यहाँ यह करने के लिए एक आसान तरीका है अपने ऐरे को ListArray ऑब्जेक्ट में कनवर्ट करने के लिए। लेकिन यह अतिरिक्त मेमोरी का उपभोग करेगा, इसलिए सुनिश्चित करें कि इसका उपयोग करने से पहले यह इसके लायक है।

संपादित

आप आप के बजाय द्विआधारी खोज algorthem उपयोग कर सकते हैं peformance और बचत स्मृति के बाद कर रहे हैं: इस तरह से आप नई वस्तुओं का आवंटन करने की जरूरत नहीं है:

Arrays.sort(array) 
int value = Arrays.binarySearch(array, "silly"); 
if (value != -1) { 
// my array has silly ! 
} 
+0

यदि मैं "silly1" की खोज करता हूं तो यह मुझे गलत परिणाम दे रहा है .. यह कहता है कि यह – user2065795

+0

Arrays.binarySearch एक ही तुलना विधि का उपयोग करता है जो list.contais .... object.equals (..) में उपयोग किया जाता है, तो कृपया सुनिश्चित करें कि आपका परीक्षण सटीक है ... –

संबंधित मुद्दे