2013-03-31 6 views
8

मैं यह जांचना चाहता हूं कि itemitem set में मौजूद है या नहीं।पाइथन 'इन' के बराबर जावा?

मैं जावा में ऐसा करना चाहते हैं:

def is_item_in_set(item, item_set): 
    if item in item_set: 
     return true 
    else: 
     return false 

(।। क्षमा याचना अगर मेरे अजगर pythonic नहीं है बस मेरे इरादे को व्यक्त करना चाहता था)

मैं प्रबंधित किया है लेखन इस :

boolean isItemInSet(String item, String[] itemSet) { 
    for(int i =0; i < itemSet.length; ++i) { 
     if(item.equals(itemSet[i])) { 
      return true; 
     } 
    } 
    return false; 
} 

सेट-सदस्यता का परीक्षण करने का कोई बेहतर तरीका है जावा में?

+0

कोड के उन दो टुकड़े बराबर नहीं हैं। – Cairnarvon

+0

अब वे हैं? क्या आपने '.contains()' का उल्लेख किया था? मैंने इसे '.equals() 'से बदल दिया है। –

+4

आपके पायथन में एंटी-पैटर्न है, क्यों न केवल आइटम_सेट' में आइटम लौटाएं? वे बाद के उदाहरण के समान नहीं हैं जितना कि कुशल नहीं है, यह ओ (एन) है जबकि पायथन उदाहरण ओ (1) है। –

उत्तर

12

आप इसे सीधे सरणी के साथ नहीं कर सकते हैं, लेकिन आप .contains पर कॉल करके Set<T> के साथ कर सकते हैं। अगर आपको लगता है कि आप isItemInSet कॉल कर रहे हैं, तो एरे के बजाय Set एस का उपयोग करने पर विचार करें - आप बहुत खुश होंगे।

उदाहरण के लिए, HashSet<T> का उपयोग isItemInSet एक ओ (1) ऑपरेशन (औसतन) बनाता है। सम्मिलन और हटाना सेट भी उतना तेज़ है। दरअसल, जावा में HashSet<T> अनिवार्य रूप से एक पायथन set() (समान अंतर्निहित अवधारणा और प्रदर्शन विशेषताओं) जैसा ही है - आप सेट पर क्वेरी, डालने या हटाने के लिए कई कॉल के साथ गति में एक बड़ा सुधार देखेंगे।

+0

'' सेट करें! –

+4

ध्यान दें कि '' सेट करें एक इंटरफ़ेस है। आप 'हैशसेट ' (अधिकांश उपयोगों के लिए अनुशंसित) जैसे कार्यान्वयन उप-वर्ग का उपयोग करना चाहेंगे। – nneonneo

+0

:) जैसे ही मुझे अपना 'हैशसेट ' मिल जाएगा और चल रहा है! –

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