tl; डॉ
Map.of…
जावा 9 और बाद के तरीकों का उपयोग करें ।
Map< String , String > animalSounds =
Map.of(
"dog" , "bark" , // key , value
"cat" , "meow" , // key , value
"bird" , "chirp" // key , value
)
;
Map.of
जावा 9 ने Map.of
स्थिर तरीकों की एक श्रृंखला को जोड़ा जो आप चाहते हैं: शाब्दिक सिंटैक्स का उपयोग करके एक अपरिवर्तनीय को त्वरित करेंMap
।
नक्शा (प्रविष्टियों का एक संग्रह) अपरिवर्तनीय है, इसलिए आप इंस्टेंटिंग के बाद प्रविष्टियों को जोड़ या हटा नहीं सकते हैं। इसके अलावा, प्रत्येक प्रविष्टि की कुंजी और मूल्य अपरिवर्तनीय है, इसे बदला नहीं जा सकता है। अन्य नियमों के लिए Javadoc देखें , जैसे कोई NULLs अनुमति नहीं, कोई डुप्लिकेट कुंजियाँ अनुमत नहीं हैं, और मैपिंग का पुनरावृत्ति क्रम मनमाना है।
आइए इन तरीकों को देखें, दिन-प्रति-सप्ताह के नक्शे के लिए कुछ नमूना डेटा का उपयोग करके उस व्यक्ति से जो हमें उम्मीद है कि उस दिन काम करेगा।
Person alice = new Person( "Alice" );
Person bob = new Person( "Bob" );
Person carol = new Person( "Carol" );
Map.of()
Map.of
खाली बनाता है Map
। असम्बद्ध, इसलिए आप प्रविष्टियाँ नहीं जोड़ सकते। इस तरह के नक्शे का एक उदाहरण है, बिना प्रविष्टियों के खाली।
Map < DayOfWeek, Person > dailyWorkerEmpty = Map.of();
DailyWorkerEmpty.toString (): {}
Map.of( … )
Map.of( k , v , k , v , …)
कई तरीके हैं जो 1 से 10 कुंजी-मूल्य जोड़े लेते हैं। यहाँ दो प्रविष्टियों का उदाहरण दिया गया है।
Map < DayOfWeek, Person > weekendWorker =
Map.of(
DayOfWeek.SATURDAY , alice , // key , value
DayOfWeek.SUNDAY , bob // key , value
)
;
सप्ताहांतकर्त्ता.तोड़ (): {SUNDAY = व्यक्ति {नाम = 'बॉब'}, SATURDAY = व्यक्ति {नाम = 'ऐलिस'}}
Map.ofEntries( … )
Map.ofEntries( Map.Entry , … )
Map.Entry
इंटरफ़ेस को लागू करने वाली किसी भी संख्या को लेता है। जावा उस इंटरफ़ेस को लागू करने वाले दो वर्गों को बंडल करता है, एक परिवर्तनशील, दूसरा अपरिवर्तनीय: AbstractMap.SimpleEntry
, AbstractMap.SimpleImmutableEntry
। लेकिन हमें एक ठोस वर्ग को निर्दिष्ट करने की आवश्यकता नहीं है। हमें केवल Map.entry( k , v )
पद्धति को कॉल करने की आवश्यकता है , हमारी कुंजी और हमारे मूल्य को पास करें, और हमें कुछ क्लास को लागू करने वाले Map.Entry
इंटरफ़ेस का एक ऑब्जेक्ट वापस मिलता है।
Map < DayOfWeek, Person > weekdayWorker = Map.ofEntries(
Map.entry( DayOfWeek.MONDAY , alice ) , // Call to `Map.entry` method returns an object implementing `Map.Entry`.
Map.entry( DayOfWeek.TUESDAY , bob ) ,
Map.entry( DayOfWeek.WEDNESDAY , bob ) ,
Map.entry( DayOfWeek.THURSDAY , carol ) ,
Map.entry( DayOfWeek.FRIDAY , carol )
);
सप्ताह के दिन काम करने वाला। , मोनडे = व्यक्ति {नाम = 'ऐलिस'}}
Map.copyOf
जावा 10 ने विधि जोड़ी Map.copyOf
। एक मौजूदा मानचित्र पास करें, उस मानचित्र की एक अपरिवर्तनीय प्रतिलिपि वापस प्राप्त करें।
टिप्पणियाँ
सूचना है कि नक्शे के इटरेटर आदेश उत्पादन के माध्यम से Map.of
कर रहे हैं नहीं की गारंटी। प्रविष्टियों में एक मनमाना क्रम है। देखे गए आदेश के आधार पर कोड न लिखें, क्योंकि प्रलेखन चेतावनी देता है कि आदेश परिवर्तन के अधीन है।
ध्यान दें कि इन सभी Map.of…
तरीकों एक वापसी Map
की एक अनिर्दिष्ट वर्ग । अंतर्निहित ठोस वर्ग जावा के एक संस्करण से दूसरे में भी भिन्न हो सकता है। यह गुमनामी जावा को विभिन्न कार्यान्वयनों में से चुनने में सक्षम बनाती है, जो भी आपके विशेष डेटा के अनुकूल है। उदाहरण के लिए, यदि आपकी चाबियाँ किसी एनम से आती हैं, तो जावा EnumMap
कवर के नीचे उपयोग कर सकता है ।