অনেক নতুনরা Arrays.asList() পদ্ধতির ধারণাকে ডাটা স্ট্রাকচার ArrayList এর সাথে ঝাঁকুনি দেয়। যদিও তারা দেখতে এবং একই রকম শোনাতে পারে, বাস্তবায়নের ক্ষেত্রে এই দুটি সম্পূর্ণ আলাদা। এই পোস্টে, আমরা Arrays.asList() পদ্ধতির মৌলিক ব্যবহার কভার করব এবং এর সাথে সম্পর্কিত কিছু বিভ্রান্তি দূর করব।
কেন Arrays.asList() ব্যবহার করা হয়?
আপনার যদি একটি অ্যারে থাকে যা আপনাকে একটি তালিকায় পরিণত করতে হবে তাহলে java.util.Arrays এই উদ্দেশ্যে একটি মোড়ক Arrays.asList() প্রদান করে। সহজ কথায়, এই পদ্ধতিটি প্যারামিটার হিসাবে একটি অ্যারে নেয় এবং একটি তালিকা প্রদান করে। সংগ্রহ কাঠামো চালু হওয়ার আগে জাভা প্ল্যাটফর্ম API-এর প্রধান অংশগুলি তৈরি করা হয়েছিল। তাই মাঝে মাঝে, আপনাকে ঐতিহ্যগত অ্যারে এবং আরও আধুনিক সংগ্রহের মধ্যে অনুবাদ করতে হতে পারে। এই ফাংশনটি সংগ্রহ এবং অ্যারে ভিত্তিক API এর মধ্যে একটি লিঙ্ক হিসাবে কাজ করে।উদাহরণ
নিম্নলিখিত উদাহরণটি দেখুন:import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
String[] teamMembers = {"Amanda", "Loren", "Keith"};
// using aslist() method
List teamList = Arrays.asList(teamMembers);
System.out.println("List : " + teamList);
HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
System.out.println("HashSet : " + teamHashSet);
}
}
আউটপুট:
তালিকা: [আমান্ডা, লরেন, কিথ] হ্যাশসেট: [কিথ, লরেন, আমান্ডা] // হ্যাশসেট শৃঙ্খলা বজায় রাখে না
কিভাবে Arrays.asList() এবং ArrayList আলাদা?
যখন আপনি একটি অ্যারেতে Arrays.asList() পদ্ধতিতে কল করেন , ফিরে আসা বস্তুটি ArrayList নয় ( লিস্ট ইন্টারফেসের একটি পরিবর্তনযোগ্য অ্যারে বাস্তবায়ন )। এটি get() এবং set() পদ্ধতি সহ একটি ভিউ অবজেক্ট যা অন্তর্নিহিত অ্যারে অ্যাক্সেস করে। সমস্ত পদ্ধতি যা অ্যারের আকার পরিবর্তন করবে যেমন যুক্ত পুনরাবৃত্তিকারীর add() বা remove() একটি UnsupportedOperationException নিক্ষেপ করে । জাভা প্রোগ্রাম সফলভাবে কম্পাইল করে কিন্তু রানটাইম এক্সেপশন দেওয়ার কারণ হল যে, দৃশ্যত, একটি "তালিকা" এর ফলাফল হিসাবে ফিরে আসেArrays.asList() । যেখানে সমস্ত সংযোজন/মোছার কাজ অনুমোদিত। কিন্তু যেহেতু, অন্তর্নিহিত ডেটা স্ট্রাকচারটি একটি অ-আবর্তনযোগ্য "অ্যারে" , তাই রান টাইমে একটি ব্যতিক্রম নিক্ষেপ করা হয়। এটি কেমন দেখাচ্ছে তা এখানে একটি স্নিপেট রয়েছে:import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
Integer[] diceRoll = new Integer[6];
//using aslist() method
List diceRollList = Arrays.asList(diceRoll);
System.out.println(diceRollList);
// using getters and setters to randomly access the list
diceRollList.set(5, 6);
diceRollList.set(0, 1);
System.out.println(diceRollList.get(5));
System.out.println(diceRollList.get(1));
System.out.println(diceRollList);
diceRollList.add(7); // Add a new Integer to the list
}
}
আউটপুট:
[নাল, নাল, নাল, নাল, নাল, নাল] 6 নাল [1, নাল, নাল, নাল, নাল, 6] থ্রেড "প্রধান" java.lang.UnsupportedOperationException-এ java.util.AbstractList.add(AbstractList. java:148) java.util.AbstractList.add(AbstractList.java:108) এ ArraysAsListDemo.main(ArraysAsListDemo.java:20)
asList() পদ্ধতি ব্যবহার করার উদাহরণ
জাভা SE 5.0 হিসাবে, asList() পদ্ধতিতে একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট রয়েছে বলে ঘোষণা করা হয়েছে। একটি অ্যারে পাস করার পরিবর্তে, আপনি পৃথক উপাদানও পাস করতে পারেন। উদাহরণ স্বরূপ:import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
List seasons = Arrays.asList("winter", "summer", "spring", "fall");
List odds = Arrays.asList(1, 3, 5, 7, 9);
System.out.println(seasons);
System.out.println(odds);
}
}
আউটপুট:
[শীত, গ্রীষ্ম, বসন্ত, শরৎ] [1, 3, 5, 7, 9]