CodeGym /Java Blog /এলোমেলো /জাভাতে অ্যারের অ্যারেলিস্টে রূপান্তর
John Squirrels
লেভেল 41
San Francisco

জাভাতে অ্যারের অ্যারেলিস্টে রূপান্তর

এলোমেলো দলে প্রকাশিত
ওহে! আজকের পাঠে, আমরা কীভাবে জাভাতে অ্যারে শুরু করতে হয় এবং অ্যারেকে অ্যারেলিস্টে কীভাবে রূপান্তর করতে হয় সে সম্পর্কে কথা বলব। অ্যারেগুলি হল জাভাতে কন্টেইনার ক্লাসের একটি এক্সটেনশন এবং ডেটার পরিমাণ নির্দিষ্টভাবে জানা থাকলে অস্থায়ীভাবে আদিম ডেটা প্রকারের একটি সেট ধরে রাখার উপায় হিসাবে কার্যকর হতে পারে। কিন্তু অ্যারেগুলি যখন তৈরি হয় তখন স্থির থাকে, যার মানে আপনি যখন একটি তৈরি করেন, তখন আপনি এটিতে থাকা আইটেমগুলির সংখ্যা পরিবর্তন করতে পারবেন না। আপনার মনে রাখা উচিত কিভাবে জাভাতে একটি অ্যারে শুরু করতে হয়; এটা এই মত দেখায়:

datatype[] isArray;
যেখানে ডেটাটাইপ হল কোনো আদিম ডেটা টাইপ যেমন int, ফ্লোট, লং, এমনকি স্ট্রিং। আপনি ঘোষণার পরে বন্ধনীগুলিও এভাবে রাখতে পারেন:

datatype isArray[];
তাহলে কিভাবে আমরা এই স্ট্যাটিক অ্যারেটি একটি সেট সংখ্যক উপাদানের সাথে নিতে পারি এবং এটিকে একটি ArrayList এ রূপান্তর করতে পারি? ওয়েল, প্রথম, আসুন একটি ArrayList কি তাকান.

অ্যারেলিস্ট

একটি ArrayList একটি অ্যারের অনুরূপ নাম থাকতে পারে কিন্তু এটি সম্পূর্ণ ভিন্নভাবে পরিচালনা করা হয়। কারণ একটি ArrayList কন্টেইনার ক্লাসকে প্রসারিত করে না, এটি List ক্লাসকে প্রসারিত করে। এবং এর মানে হল যে সবকিছু ভিন্নভাবে পরিচালিত হয়। এক জিনিসের জন্য, কারণ এটি একটি তালিকা, আপনি এটি ভিন্নভাবে ম্যানিপুলেট করতে পারেন। আপনি add(element) ব্যবহার করে ArrayList এর সাইজ বাড়াতে বা কমাতে পারেন , যা এলিমেন্টকে তালিকার শেষে রাখে এবং প্রয়োজনে সাইজ এক করে বাড়ায়। অথবা আপনি trimToSize() ব্যবহার করতে পারেনযা শেষে যেকোন খালি সূচক সরিয়ে দেয় এবং ArrayList কে তার বর্তমান আকারে ছাঁটাই করে। সুতরাং আপনি দেখতে পাচ্ছেন যে শুধুমাত্র একটি অ্যারের পরিবর্তে একটি ArrayList ব্যবহার করার কিছু সুবিধা রয়েছে। এর পরে আমরা আপনাকে একটি অ্যারে থেকে অ্যারেলিস্টে রূপান্তর করার দুটি পদ্ধতি এবং আপনার প্রয়োজন হলে কীভাবে ফিরে যেতে হবে তা দেখাতে যাচ্ছি।

অ্যারে থেকে অ্যারেলিস্টে এবং অ্যারেলিস্ট থেকে অ্যারেতে সরানো হচ্ছে জাভাতে

সুতরাং, ধরা যাক যে বিড়াল গাছ মেরামতের জন্য আপনার কোম্পানির হাতে কতগুলি বাদাম এবং বোল্ট রয়েছে তার একটি তালিকা রাখার জন্য আপনি একটি প্রোগ্রাম লিখেছেন। বছরের পর বছর ধরে, আপনার কেবলমাত্র 30টি বিভিন্ন ধরণের প্রয়োজন, তাই ট্র্যাক রাখতে কেবল একটি অ্যারে ব্যবহার করা সহজ। কিন্তু এখন আপনার কাছে একটি নতুন ক্লায়েন্ট আছে যার জন্য আপনাকে অতিরিক্ত 5 ধরনের স্টক করতে হবে। কিভাবে আপনি আপনার প্রোগ্রাম পরিবর্তন করতে পারেন এবং আপনার সমস্ত ডেটা রাখতে পারেন, এবং আপনি যখন অন্য ক্লায়েন্ট বাছাই করেন তখন এটি আবার করা থেকে নিজেকে আটকাতে পারেন? সেটা ঠিক! একটি অ্যারেলিস্ট! সুতরাং কিভাবে আপনি একটি ArrayList একটি জাভা অ্যারে রূপান্তর করবেন? তিনটি পদ্ধতি আছে। .asList() পদ্ধতি ব্যবহার করে জাভা অ্যারেগুলির একটি দুর্দান্ত সরঞ্জাম রয়েছে যা আপনি .asList() নামক API-এর দিকে তাকালে দেখতে পাবেন । তাই আপনি শুধু এই লিখতে পারেন:

boltInventory.asList(bolts);
এই পদ্ধতির সমস্যা হল যে এটি একটি সত্য ArrayList তৈরি করে না। এটি যা করে তা হল একটি তালিকা তৈরি করা যা আকারে স্থির এবং অপরিবর্তনীয়। তাই আপনি এখনও একটি গতিশীল উপায়ে আকার পরিবর্তন করতে পারবেন না. উপাদান যোগ বা অপসারণ করার চেষ্টা একটি ব্যতিক্রম ঘটবে. সুতরাং এটির ব্যবহার থাকলেও এটি একটি সত্য রূপান্তর নয়। কিন্তু আমরা এই ব্যবহার করতে পারেন. একটি আর্গুমেন্ট হিসাবে .asList() ব্যবহার করা জাভাতে একটি অ্যারেকে তালিকায় রূপান্তর করার এটি দ্বিতীয় উপায়। কারণ .asList() পদ্ধতি একটি তালিকা তৈরি করে, আমরা এটি ব্যবহার করতে পারি আমাদের প্রকৃত ArrayList-এ একটি রেফারেন্স পাস করতে। এখানে কিভাবে একটি ArrayList আরম্ভ করবেন:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>();
এটি একটি ArrayList তৈরি করবে যাতে দশটি খালি কক্ষ রয়েছে। যাইহোক, শেষে () ArrayList পূরণ করতে একটি আর্গুমেন্ট পাস করতে ব্যবহার করা যেতে পারে। তাই .asList পদ্ধতির সাথে একত্রিত করে, আপনার আছে:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>(Arrays.asList(bolts));
এটি .asList() পদ্ধতি দ্বারা তৈরি করা তালিকাকে ArrayList-এ পাস করে, তাই এখন আপনি আপনার প্রয়োজন অনুযায়ী এটিকে গতিশীলভাবে ম্যানিপুলেট করতে পারেন। Collections.addAll() পদ্ধতি ব্যবহার করা জাভাতে অ্যারেকে অ্যারেলিস্টে রূপান্তর করার আরেকটি উপায় হল এই পদ্ধতিটি ব্যবহার করা। এটি অ্যারের বিষয়বস্তু অ্যারেলিস্টে প্রেরণ করে। এই পদ্ধতির জন্য জেনেরিক সিনট্যাক্স হল:

Collections.addAll(c, T);
যেখানে c হল গন্তব্য এবং T হল যা পাস করা হচ্ছে। সুতরাং আমাদের উদাহরণের জন্য, সিনট্যাক্সটি দেখতে এইরকম হবে:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>():
Collections.addAll(boltsInventory, bolts);
এটি অ্যারে বোল্টের সম্পূর্ণ বিষয়বস্তু নতুন অ্যারেলিস্টে প্রেরণ করবে। অ্যারেলিস্টকে অ্যারেতে রূপান্তর করা এমন একটি সময় থাকতে পারে যখন আপনাকে জাভাতে অ্যারেলিস্টকে অ্যারেতে রূপান্তর করতে হবে। যদি আপনি করেন, ArrayList এর একটি পদ্ধতি আছে .toArray(a) , যেখানে a হল গন্তব্য। সুতরাং আমাদের উদাহরণের জন্য, সিনট্যাক্স হবে:

Integer boltsInventoryArray[] = new Integer{boltsInventory.size()];
// this ensures the newly created array is of the same size as the ArrayList
boltsInventoryArray = boltsInventory.toArray(boltsInventoryArray);
আপনি যখন জাভাতে এইভাবে অ্যারেতে একটি তালিকা পরিবর্তন করেন, আপনি একটি গভীর অনুলিপি তৈরি করছেন। অর্থাৎ, অ্যারের সমস্ত রেফারেন্স অ্যারেলিস্টের রেফারেন্স থেকে আলাদা। সুতরাং আপনি ArrayList এ সংরক্ষিত ডেটা পরিবর্তন না করেই অ্যারেতে ডেটা ম্যানিপুলেট করতে পারেন। যখন আপনি ডেটা পরীক্ষা করতে চান তখন একটি জাভা তালিকাকে একটি অ্যারেতে রূপান্তর করা দরকারী।

উপসংহার

অ্যারেগুলি দ্রুত অ্যাক্সেস এবং ছোট ডেটা সেটগুলির দ্রুত ম্যানিপুলেশনের জন্য খুব দরকারী, তবে তাদের আকার পরিবর্তন করতে অক্ষমতার অর্থ হল দীর্ঘমেয়াদী ব্যবহারের জন্য তারা দ্রুত দক্ষতা হারায়। একটি ArrayList আপনাকে সেই নমনীয়তা এবং প্রয়োজন অনুসারে নোডগুলি সন্নিবেশ করা এবং অপসারণ করার ক্ষমতা দেয়। জাভা অ্যারেকে কীভাবে একটি তালিকায় রূপান্তর করতে হয় তা শিখলে আপনার প্রোগ্রামগুলির সামগ্রিক দক্ষতা উন্নত হবে এবং তাদের রানটাইমও উন্নত হবে।
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION