একটি পেয়ারা immutableMap আরম্ভ করা হচ্ছে


140

পেয়ারা মানচিত্রের সূচনা করার জন্য একটি দুর্দান্ত শর্টকাট সরবরাহ করে। তবে যখন আমার মানচিত্রটি নয়টি এন্ট্রিতে আরম্ভ হবে তখন আমি নীচের সংকলক ত্রুটি (এক্লিপ্স ইন্ডিগো) পাই।

পদ্ধতি of(K, V, K, V, K, V, K, V, K, V)ধরনের ImmutableMapআর্গুমেন্ট জন্য প্রযোজ্য নয় (String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)

ImmutableMap<String,String> myMap = ImmutableMap.of(
        "key1", "value1", 
        "key2", "value2", 
        "key3", "value3", 
        "key4", "value4", 
        "key5", "value5", 
        "key6", "value6", 
        "key7", "value7", 
        "key8", "value8", 
        "key9", "value9"
        );

বার্তায় এটি বলে মনে হচ্ছে

একটি ইমমিটেবল ম্যাপে সর্বোচ্চ চার জোড়া কী, মানের আকার থাকে।

স্পষ্টতই, এটি কেস হতে পারে না তবে আমার ইনিশিয়ালাইজারের আকার বাড়ানোর জন্য আমি কী করব তা বুঝতে পারি না।

কেউ কি বলতে পারেন যে কি অনুপস্থিত?

উত্তর:


256

লক্ষ্য করুন যে আপনার ত্রুটি বার্তায় কেবল পাঁচটি K, Vজোড়া রয়েছে , মোট 10 টি যুক্তি। এটি নকশা দ্বারা; ইমমিটেবলম্যাপ ক্লাসটি of()শূন্য এবং পাঁচটি কী-মান জুটির মধ্যে গ্রহণ করে ছয়টি ভিন্ন পদ্ধতি সরবরাহ করে। একটা নয় of(...)জমিদার গ্রহণ একটি কারণ প্যারামিটার varags Kএবং Vবিভিন্ন ধরনের হতে পারে।

আপনি একটি চান ImmutableMap.Builder:

ImmutableMap<String,String> myMap = ImmutableMap.<String, String>builder()
    .put("key1", "value1") 
    .put("key2", "value2") 
    .put("key3", "value3") 
    .put("key4", "value4") 
    .put("key5", "value5") 
    .put("key6", "value6") 
    .put("key7", "value7") 
    .put("key8", "value8") 
    .put("key9", "value9")
    .build();

দ্রুত উত্তরের জন্য ধন্যবাদ। আমি পেয়ারা চেষ্টা করার সিদ্ধান্ত নিয়েছি কারণ স্ট্যান্ডার্ড মানচিত্রের প্রাথমিককরণের জন্য প্রয়োজনীয় সমস্ত 'পুটস' টাইপ করতে চাইনি। যে ধারণা জন্য এত!
ব্যবহারকারী 903724

7
@ ব্যবহারকারী 903724: এখানে পেয়ারা ব্যবহারের মূল কারণ হ'ল শক্তিশালী অপরিবর্তনীয়তা, আইএমও।
জন স্কিটি

2
এটি, বা সামান্য কমে যাওয়া মেমরির খরচ - এবং বিল্ডার সিনট্যাক্সগুলি বেশ সাবলীল things
লুই ওয়াসারম্যান

2
ঠিক আছে, আপনার কাছে এখনও একাধিক পুট থাকতে পারে তবে তারা এখন সাবলীল এপিআই ব্যবহার করছে তাই myMapপ্রত্যেকের জন্য পুনরাবৃত্তি করার দরকার নেই.put
কেভিন ওয়েলকার

21
জনের উদাহরণ কোডটি কীভাবে হতে পারে public static finalতা এখনও লক্ষ্য করুন এবং এটি এখনও কার্যকর হয়, সহায়ক সহায়ক পদ্ধতি বা static{}প্রাথমিককরণের প্রয়োজন নেই!
কেভিন বুউরিলিয়ন

62

মানচিত্র সংক্ষিপ্ত হলে আপনি এটি করতে পারেন:

ImmutableMap.of(key, value, key2, value2); // ...up to five k-v pairs

এটি যদি দীর্ঘ হয় তবে:

ImmutableMap.builder()
   .put(key, value)
   .put(key2, value2)
   // ...
   .build();

9
পঠনযোগ্যতা ছাড়াও, আপনি ImmutableMap.ofপাঁচটি পর্যন্ত মূল মানের জোড়ের জন্য স্থিতিশীল কারখানাটি ব্যবহার করতে পারেন । তারপরে আপনাকে বিল্ডার ব্যবহার করতে হবে।
Xaerxess

0

"পুট" অবমূল্যায়ন করা হয়েছে , এটি ব্যবহার থেকে বিরত থাকুন, পরিবর্তে। ব্যবহার করুন

ImmutableMap<String, String> myMap = ImmutableMap.of(
    "city1", "Seattle",
    "city2", "Delhi"
);

3
না। অপরিবর্তনযোগ্য ম্যাপ.পুট হ্রাস করা হয়েছে। জন স্কিট ইমটুটেবল ম্যাপ.বিল্ডার.পুট ব্যবহার করছে যা হ'ল আমাদের কীভাবে 5 টিরও বেশি টিপল সহ একটি মানচিত্রের সূচনা করা উচিত।
আই 2 বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.