মনে হচ্ছে একটু দেরি হলেও এখানে আমার দুটি সেন্ট। আমরা আদিম ধরণের List<int>
হিসাবে থাকতে পারি না int
তাই আমরা কেবল তা পারি List<Integer>
।
জাভা 8 (int অ্যারে)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
জাভা 8 এবং নীচে (পূর্ণসংখ্যার অ্যারে)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 = Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
অ্যারেলিস্ট প্রয়োজন এবং তালিকা নয়?
যদি আমরা List
উদাহরণস্বরূপ একটি নির্দিষ্ট বাস্তবায়ন চাই ArrayList
তবে আমরা এটি toCollection
হিসাবে ব্যবহার করতে পারি :
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
list21
কাঠামোগতভাবে সংশোধন করা যাবে না কেন ?
যখন আমরা ব্যবহার করি Arrays.asList
প্রত্যাবর্তিত তালিকার আকার ঠিক করা হয় কারণ প্রত্যাবর্তিত তালিকাটি নয় java.util.ArrayList
, তবে একটি প্রাইভেট স্ট্যাটিক শ্রেণীর ভিতরে সংজ্ঞায়িত করা হয়েছে java.util.Arrays
। সুতরাং আমরা যদি ফেরত তালিকা থেকে উপাদানগুলি যুক্ত বা সরিয়ে ফেলি, তবে একটি UnsupportedOperationException
নিক্ষেপ করা হবে। সুতরাং আমরা list22
যখন তালিকাটি পরিবর্তন করতে চাই তখন আমাদের সাথে যাওয়া উচিত । আমাদের জাভা 8 থাকলে আমরাও সাথে যেতে পারি list23
।
স্পষ্ট list21
হওয়ার জন্য এই অর্থে সংশোধন করা যেতে পারে যে আমরা কল করতে পারি list21.set(index,element)
তবে এই তালিকাটি কাঠামোগতভাবে সংশোধন করা যাবে না অর্থাৎ তালিকা থেকে উপাদানগুলি যুক্ত করতে বা অপসারণ করতে পারে না। আপনি এই প্রশ্নটি পরীক্ষা করতে পারেন ।
যদি আমরা একটি অপরিবর্তনীয় তালিকা চাই তবে আমরা এটিকে এটিকে মোড়ানো করতে পারি:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
আরেকটি বিষয় লক্ষণীয় হ'ল পদ্ধতিটি Collections.unmodifiableList
নির্দিষ্ট তালিকার একটি অবিশ্বাস্য দৃশ্য প্রদর্শন করে। একটি অপরিবর্তনীয় দৃশ্যের সংগ্রহ হ'ল এমন একটি সংগ্রহ যা অনিবার্যযোগ্য নয় এবং এটি একটি ব্যাকিং সংগ্রহের মধ্যেও একটি দৃশ্য। নোট করুন যে ব্যাকিং সংগ্রহে পরিবর্তনগুলি এখনও সম্ভব হতে পারে এবং যদি এটি ঘটে থাকে তবে তারা অবিস্মরণীয় দৃশ্যের মাধ্যমে দৃশ্যমান।
জাভা 9 এবং 10 এ আমাদের একটি সত্যিকারের অপরিবর্তনীয় তালিকা থাকতে পারে।
সত্যিই অপরিবর্তনীয় তালিকা
জাভা 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
জাভা 10 (সত্যই অপ্রয়োজনীয় তালিকা) দুটি উপায়ে:
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
আরও আমার জন্য এই উত্তর পরীক্ষা করে দেখুন।
Arrays.asList(new int[] { 1, 2, 3 })
; স্পষ্টভাবে জাভা 1.4.2 মধ্যে কম্পাইল করা হয়নি, কারন একটিint[]
হল না একটিObject[]
।