मेरे पास प्रति कुंजी डिफ़ॉल्ट मानों का HashMap<K,V> है।

मैं इसे एक ImmutableMap.Builder में बदलना चाहता हूं क्योंकि मेरे पास एक और ImmutableMap है जिसे मैं मूल हैश मैप में मर्ज और ओवरराइड करना चाहता हूं। मैं कुछ डिफ़ॉल्ट जोड़ियों को ओवरराइड करना चाहता हूं और अंत में एक ImmutableMap बनाना चाहता हूं।

मैं HashMap को ImmutableMap.Builder में कैसे बदल सकता हूं?

मैंने ImmutableMap.Builder कन्स्ट्रक्टर जिसे HashMap मिलता है।

1
Elad Benda 21 अगस्त 2019, 18:35

1 उत्तर

सबसे बढ़िया उत्तर

बस putAll का उपयोग करें या क्या मुझे यहां कुछ याद आ रहा है? आप निर्माण करते समय मौजूदा कुंजियों को संशोधित नहीं कर सकते हैं, लेकिन आप और जोड़ सकते हैं:

    Map<String, String> srcMap = Map.of("A", "a", "B", "b", "C", "c");

    ImmutableMap<String, String> map = ImmutableMap.<String, String> builder()
            .putAll(srcMap)
            .put("D", "d")
            .build();

    map.forEach((k,v) -> System.out.printf ("[%s:%s]", k, v));

यदि आप मौजूदा मानों को ओवरराइड करना चाहते हैं, तो आप putAll को लागू करने से पहले स्वयं srcMap को संशोधित कर सकते हैं।

साथ ही, यदि आपके पास एक हैश मैप है जो एक अपरिवर्तनीय मैप में परिवर्तित होने के लिए तैयार है, तो आप बिल्डर भाग को छोड़ सकते हैं और केवल copyOf का उपयोग कर सकते हैं:

ImmutableMap<String, String> finalMap = ImmutableMap.copyOf(srcMap);
5
Jaywalker 21 अगस्त 2019, 16:17