বেনাম ক্লাস তৈরি করা এড়াতে আমি একটি স্ট্যাটিক ইনিশিয়ালাইজার ব্যবহার পছন্দ করি (যার কোনও উদ্দেশ্য নেই), তাই আমি স্ট্যাটিক ইনিশিয়ালাইজারের সাহায্যে টিপস সূচনা করব। সমস্ত তালিকাভুক্ত সমাধান / টিপস টাইপ-নিরাপদ।
দ্রষ্টব্য: মানচিত্রটি অবিস্মরণীয় করার বিষয়ে প্রশ্নটি কিছু বলছে না, তাই আমি এটিকে ছেড়ে দেব, তবে জেনে রাখুন যে এটি সহজেই সম্পন্ন করা যায় Collections.unmodifiableMap(map)।
প্রথম টিপ
1 ম টিপটি হ'ল আপনি মানচিত্রে একটি স্থানীয় রেফারেন্স তৈরি করতে পারেন এবং আপনি এটিকে একটি ছোট নাম দিন:
private static final Map<Integer, String> myMap = new HashMap<>();
static {
final Map<Integer, String> m = myMap; // Use short name!
m.put(1, "one"); // Here referencing the local variable which is also faster!
m.put(2, "two");
m.put(3, "three");
}
দ্বিতীয় টিপ
২ য় টিপটি হ'ল আপনি এন্ট্রি যুক্ত করতে একটি সহায়ক পদ্ধতি তৈরি করতে পারেন; আপনি যদি চান তবে এই সহায়ক পদ্ধতিটি সর্বজনীনও করতে পারেন:
private static final Map<Integer, String> myMap2 = new HashMap<>();
static {
p(1, "one"); // Calling the helper method.
p(2, "two");
p(3, "three");
}
private static void p(Integer k, String v) {
myMap2.put(k, v);
}
এখানে সহায়ক পদ্ধতিটি পুনরায় ব্যবহারযোগ্য নয় যদিও এটি কেবলমাত্র উপাদানগুলিকে যুক্ত করতে পারে myMap2। এটিকে পুনরায় ব্যবহারযোগ্য করে তোলার জন্য, আমরা মানচিত্রটিকে সহায়ক সহায়ক পদ্ধতির একটি পরামিতি বানাতে পারি, তবে আরম্ভের কোডটি আরও ছোট হবে না orter
তৃতীয় টিপ
3 য় টিপটি হ'ল আপনি জন কার্যকারীতা সহ পুনরায় ব্যবহারযোগ্য বিল্ডারের মতো সহায়ক শ্রেণি তৈরি করতে পারেন। এটি সত্যিই একটি সরল, 10-লাইনের সহায়ক শ্রেণি যা টাইপ-নিরাপদ:
public class Test {
private static final Map<Integer, String> myMap3 = new HashMap<>();
static {
new B<>(myMap3) // Instantiating the helper class with our map
.p(1, "one")
.p(2, "two")
.p(3, "three");
}
}
class B<K, V> {
private final Map<K, V> m;
public B(Map<K, V> m) {
this.m = m;
}
public B<K, V> p(K k, V v) {
m.put(k, v);
return this; // Return this for chaining
}
}