2012-07-10 20 views
8

यह मानते हुए कि आप इस तरह के element, set, collection और relation जावा में के रूप में सेट सिद्धांत अवधारणाओं को लागू करना चाहते हैं: आप कैसे खाली सेट का प्रतिनिधित्व करेंगे?खाली सेट को कैसे कार्यान्वित करें - ∅?

अगर मैं NULL अवधारणा के बारे में सोचता हूं तो क्या मैं खुद को गुमराह करता हूं क्योंकि इसका उपयोग डेटाबेस के तीन मूल्यवान तर्कों द्वारा किया जाता है?

+4

मुझे यकीन नहीं है कि इस प्रश्न का एक अनूठा उत्तर है; यह इस बात पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं। स्पष्ट उत्तर "खाली 'सेट' का उपयोग करें", लेकिन आप जो भी कर रहे हैं उसके आधार पर 'NULL' भी उचित हो सकता है। –

+4

इच्छित एप्लिकेशन के आधार पर खाली सेट का प्रतिनिधित्व करने के असंख्य तरीके हैं। ' = नया हैशसेट ()' सबसे सरल है। –

+4

संग्रह .emptySet() दिमाग में आता है ... –

उत्तर

27

उपयोग Collections.emptySet():

खाली सेट (अपरिवर्तनीय) देता है। यह सेट serializable है। के विपरीत नामित फ़ील्ड के विपरीत, यह विधि पैरामीटरकृत है।

Set<String> s = Collections.emptySet(); 

कार्यान्वयन टिप्पणी: इस उदाहरण एक खाली सेट प्राप्त करने के लिए टाइप सुरक्षित तरीका दिखाता है इस विधि का क्रियान्वयन प्रत्येक कॉल के लिए एक अलग सेट वस्तु नहीं बना है। इस विधि का उपयोग करने के लिए समान नाम वाले फ़ील्ड का उपयोग करके पर तुलनीय लागत होने की संभावना है। (इस विधि के विपरीत, क्षेत्र नहीं प्रकार सुरक्षा प्रदान करता है।)

+0

आपके सुझाव के लिए धन्यवाद। मैं आपकी सलाह का उपयोग करूंगा। – M4TT4CK

8

null का उपयोग करते हुए एक खाली सेट का प्रतिनिधित्व करने के लिए एक बुरा विचार है। nullSet जैसा व्यवहार नहीं करता है क्योंकि (जाहिर है) इस पर एक ऑपरेशन करने के सभी प्रयास NullPointerException फेंक देंगे। इसका अर्थ यह है कि यदि आप खाली सेट को इंगित करने के लिए null का उपयोग करते हैं, तो आपको null के लिए परीक्षणों के साथ कोड भंग कर दिया जाएगा ... और यदि आप किसी को याद करते हैं, तो आपको एक बग मिल गई है।

समाधान संग्रह .emptySet() का उपयोग करना है यदि आप एक अपरिवर्तनीय खाली सेट चाहते हैं, या उचित Set कक्षा का उदाहरण बनाएं, यदि आप एक म्यूटेबल सेट खाली करना चाहते हैं।

+0

+1 यह बताते हुए कि नल एक बुरा विचार क्यों है। –

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