एक अनमॉडिफिएबल Map वह है जिसके कीज़ और वैल्यूज़ को एक बार अनमॉडिफिएबल मैप इंस्टेंस बनने के बाद जोड़ा, हटाया, या अपडेट नहीं किया जा सकता। Map से स्टेटिक फैक्ट्री मेथड: Map.of() और Map.ofEntries() जावा 9 में अनमॉडिफिएबल मैप बनाने का सुविधाजनक तरीका प्रदान करते हैं।
Map.of() और Map.ofEntries() मेथड का उपयोग करके बनाए गए मैप इंस्टेंस में निम्नलिखित विशेषताएं होती हैं।
- फैक्ट्री मेथड द्वारा लौटाया गया मैप पारंपरिक रूप से इम्यूटेबल है। इसका मतलब है कि कीज़ और वैल्यूज़ को जोड़ा, हटाया, या अपडेट नहीं किया जा सकता। मैप पर किसी भी म्यूटेटर मेथड को कॉल करने पर UnsupportedOperationException होता है।
- यदि मैप के निहित कीज़/वैल्यूज़ स्वयं म्यूटेबल हैं, तो यह मैप को इनकंसिस्टेंट व्यवहार करने या इसकी सामग्री को बदलते हुए दिखने का कारण बन सकता है।
- एक इम्यूटेबल मैप नल कीज़ और वैल्यूज़ की अनुमति नहीं देता। यदि नल कीज़ या वैल्यूज़ के साथ बनाने का प्रयास किया जाता है, तो यह NullPointerException फेंकता है।
- डुप्लीकेट कीज़ निर्माण के समय ही अस्वीकार कर दी जाती हैं। स्टेटिक फैक्ट्री मेथड में डुप्लीकेट कीज़ पास करने पर IllegalArgumentException होता है।
- इम्यूटेबल मैप्स सीरियलाइज़ेबल हैं यदि सभी कीज़ और वैल्यूज़ सीरियलाइज़ेबल हैं।
- मैपिंग के इटरेशन का क्रम अनिर्दिष्ट है और परिवर्तन के अधीन है।
सिंटैक्स
Map.of(k1, v1, k2, v2) Map.ofEntries(entry(k1, v1), entry(k2, v2),...)
Map.of() का उदाहरण
import java.util.Map;
public class UnmodifiableMapTest {
public static void main(String[] args) {
Map empMap = Map.of("101", "Raja", "102", "Adithya", "103", "Jai", "104", "Chaitanya");
System.out.println("empMap - " + empMap);
empMap.put("105", "Vamsi"); // throws UnsupportedOperationException
}
}
आउटपुट
empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja} Exception in thread "main" java.lang.UnsupportedOperationException ...
Map.ofEntries() का उदाहरण
import java.util.Map;
import static java.util.Map.entry;
public class UnmodifidMapTest {
public static void main(String[] args) {
Map empMap = Map.ofEntries(entry("101", "Raja"), entry("102", "Adithya"), entry("103", "Jai"), entry("104", "Chaitanya"));
System.out.println("empMap - " + empMap);
}
}
आउटपुट
empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}