জাভা ৯-এ Collections API-তে অনেক ফ্যাক্টরি মেথড যোগ করা হয়েছে। এই ফ্যাক্টরি মেথডগুলো ব্যবহার করে আনমডিফাইয়েবল লিস্ট, সেট ও ম্যাপ কালেকশন অবজেক্ট তৈরি করা যায় যাতে কোডের লাইন সংখ্যা কমে। List.of(), Set.of(), Map.of() এবং Map.ofEntries() হলো স্ট্যাটিক ফ্যাক্টরি মেথড যা জাভা ৯-এ ইমিউটেবল কালেকশন তৈরি করার সুবিধাজনক পথ।
ইমিউটেবল কালেকশনের সুবিধা
- কম হিপ স্পেস: কালেকশন ডেটা সংরক্ষণের জন্য প্রয়োজনীয় স্পেস জাভার পূর্ববর্তী ভার্সনগুলোর ট্রেডিশনাল পদ্ধতির তুলনায় খুব কম।
- দ্রুত ডেটা এক্সেস: ডেটা সংরক্ষণ ও Collections.unmodifiable-এ র্যাপ করার ওভারহেড কম হলে ডেটা এক্সেস দ্রুত হয়। অর্থাৎ প্রোগ্রামের সামগ্রিক দক্ষতা বাড়ে।
- থ্রেড সেফটি: ইমিউটেবল কালেকশন স্বাভাবিকভাবে থ্রেড-সেফ। কারণ সব থ্রেড একই আন্ডারলাইং ডেটার ভিউ পায়।
সিনট্যাক্স
List.of(elements...) Set.of(elements...) Map.of(k1, v1, k2, v2)
উদাহরণ
import java.util.Set;
import java.util.List;
import java.util.Map;
public class ImmutableCollectionsTest {
public static void main(String args[]) {
List<String> stringList = List.of("a", "b", "c");
System.out.println("List values: " + stringList);
Set<String> stringSet = Set.of("a", "b", "c");
System.out.println("Set values: " + stringSet);
Map<String, Integer> stringMap = Map.of("a", 1, "b", 2, "c", 3);
System.out.println("Map values: " + stringMap);
}
}
আউটপুট
List values: [a, b, c] Set values: [a, b, c] Map values: {a=1, b=2, c=3}