2012-12-12 24 views
7

जावा संग्रह पर शून्य-सुरक्षित contains करने का सबसे अच्छा तरीका क्या है?शून्य-सुरक्षित संग्रह में विधि

- दूसरे शब्दों में

if (collection != null && collection.contains(x)) 

?

मुझे उम्मीद थी कि अपाचे कॉमन्स-संग्रह में CollectionUtils.contains(collection, x) की तरह कुछ था जो संग्रह शून्य था, अगर संग्रह शून्य था, क्योंकि size() के साथ है, जो खाली संग्रह की तरह शून्य है।

हालांकि, ऐसा लगता है कि ऐसी कोई चीज़ नहीं है - क्या मुझे अभी याद आया?

+5

'संग्रह! = Null && collection.contains (x)' के साथ समस्या क्या है? सरल और कोई बाहरी निर्भरता नहीं! –

+1

@ अहिनाव सरकार: यही वह है जो मैं सोच रहा था! – Cratylus

+0

यहां कुछ हद तक संबंधित पोस्ट है, जो हर समय शून्य की जांच के साथ सौदा नहीं करना चाहता था: http://stackoverflow.com/questions/271526/avoiding-null-statements-in-java – RonaldBarzell

उत्तर

10

आपको इसके बजाय नल ऑब्जेक्ट पैटर्न लागू करना चाहिए और शून्य संग्रह के बजाय खाली संग्रह का उपयोग करना चाहिए। बेशक, शायद यह आपकी समस्या के लिए उपयुक्त है, लेकिन अधिक संदर्भ के बिना यह कहना मुश्किल है। दूसरे शब्दों में, मुझे लगता है कि आप गलत समस्या को हल कर रहे हैं - क्यों collection पहले स्थान पर शून्य हो सकता है?

+3

+1। उचित समाधान null collections._ –

+0

का उपयोग करने के लिए नहीं है सामान्य रूप से मैं सहमत हूं। विशिष्ट मुद्दा यह है कि संग्रह 'session.getAttribute' से आ रहा है और इस प्रकार कभी सेट नहीं किया जा सकता है। तो कम से कम एक गैर-शून्य जांच अपरिहार्य है - लेकिन अगर ऐसे कई चेक थे, हाँ, मैं बस एक ही संग्रह कर सकता था और खाली संग्रह के साथ प्रतिस्थापित कर सकता था। – wrschneider

+0

उस मामले में, गुवा के वैकल्पिक का उपयोग करने पर विचार करें, शायद? समस्या यह है कि अभी भी आपको वैकल्पिक .isPresent() के लिए चेक के साथ छोड़ देता है। मुझे लगता है कि यह मूल रूप से अपरिहार्य है। –