বেনাম ক্লাস তৈরি করা এড়াতে আমি একটি স্ট্যাটিক ইনিশিয়ালাইজার ব্যবহার পছন্দ করি (যার কোনও উদ্দেশ্য নেই), তাই আমি স্ট্যাটিক ইনিশিয়ালাইজারের সাহায্যে টিপস সূচনা করব। সমস্ত তালিকাভুক্ত সমাধান / টিপস টাইপ-নিরাপদ।
দ্রষ্টব্য: মানচিত্রটি অবিস্মরণীয় করার বিষয়ে প্রশ্নটি কিছু বলছে না, তাই আমি এটিকে ছেড়ে দেব, তবে জেনে রাখুন যে এটি সহজেই সম্পন্ন করা যায় 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
}
}