"আপনার মস্তিষ্কের জন্য একটু প্রশিক্ষণ কেমন হবে? আমি আশা করি এটি এখনও কার্যকরী ক্রমে আছে।"
"আগে, কন্টেইনার এবং সংগ্রহের সারণীতে আপনি দেখেছেন যে একই ইন্টারফেসে একাধিক বাস্তবায়ন থাকতে পারে। আমি এখন আপনাকে বলব কেন আমাদের এটি প্রয়োজন। এবং কিভাবে ArrayList LinkedList থেকে আলাদা ।"
"বিষয়টি হল, সংগ্রহগুলি বিভিন্ন উপায়ে বাস্তবায়িত হতে পারে এবং কোনও বাস্তবায়ন সর্বদা আদর্শ নয়। একটি পদ্ধতিতে, কিছু অপারেশন দ্রুত, কিন্তু অন্যগুলি ধীর। অন্য পদ্ধতির জন্য বিপরীতটি সত্য হতে পারে। কোনও নিখুঁত এক-আকার নেই- ফিট সব সমাধান।"
"এ কারণেই একই সংগ্রহের বেশ কয়েকটি সংস্করণ বাস্তবায়নের সিদ্ধান্ত নেওয়া হয়েছিল। প্রতিটি বাস্তবায়নকে কিছু সংকীর্ণ সেট অপারেশনের জন্য অপ্টিমাইজ করা উচিত। এভাবেই বিভিন্ন সংগ্রহ তৈরি হয়েছে। উদাহরণ হিসাবে দুটি ক্লাস অধ্যয়ন করা যাক: ArrayList এবং LinkedList ।"
"অভ্যন্তরীণভাবে, ArrayList একটি সাধারণ অ্যারে হিসাবে প্রয়োগ করা হয় । তাই মাঝখানে একটি উপাদান সন্নিবেশ করার জন্য প্রয়োজন যে আমরা প্রথমে সমস্ত পরবর্তী উপাদানগুলিকে একটি করে স্থানান্তরিত করি, এবং তারপরে নতুন উপাদানটিকে বিনামূল্যের স্লটে রাখি। উপাদানগুলি পাওয়া এবং সেট করা (পান, সেট করুন) ) দ্রুত , যেহেতু এই অপারেশনগুলি কেবল প্রাসঙ্গিক অ্যারে উপাদানটিকে সম্বোধন করে।"
" লিঙ্কডলিস্টের একটি ভিন্ন অভ্যন্তরীণ কাঠামো রয়েছে৷ এটি আন্তঃসংযুক্ত উপাদানগুলির সাথে একটি তালিকা হিসাবে প্রয়োগ করা হয়েছে : স্বতন্ত্র উপাদানগুলির একটি সেট, যার প্রতিটি তালিকার পরবর্তী এবং পূর্ববর্তী উপাদানগুলির রেফারেন্স সংরক্ষণ করে৷ এই ধরনের একটি তালিকার মাঝখানে একটি উপাদান সন্নিবেশ করতে, আপনাকে শুধুমাত্র এর ভবিষ্যত প্রতিবেশীদের রেফারেন্স পরিবর্তন করতে হবে। যাইহোক, উপাদান নং 130 পেতে, আপনাকে 0 থেকে 130 পর্যন্ত প্রতিটি বস্তুর মধ্য দিয়ে চালাতে হবে। অন্য কথায়, গেট এবং সেট অপারেশনগুলি ধীর হবে । নিম্নলিখিত টেবিলটি দেখুন :"
বর্ণনা | অপারেশন | অ্যারেলিস্ট | যোজিত তালিকা |
---|---|---|---|
একটি উপাদান পান | পাওয়া | দ্রুত | ধীর |
একটি উপাদান সেট করুন | সেট | দ্রুত | ধীর |
একটি উপাদান যোগ করুন (তালিকার শেষে) | যোগ করুন | দ্রুত | দ্রুত |
একটি উপাদান সন্নিবেশ করান (একটি নির্বিচারে অবস্থানে) | যোগ (i, মান) | ধীর | দ্রুত |
একটি উপাদান সরান | অপসারণ | ধীর | দ্রুত |
"আমি দেখছি। আমি এখন এটা বুঝতে শুরু করছি। কোন মাপকাঠি বা নিয়ম আছে যা আমাকে জানতে সাহায্য করবে কোন বিশেষ পরিস্থিতিতে কোন সংগ্রহ সবচেয়ে ভালো?"
"এটি সহজ রাখার জন্য, আমি আপনাকে নিম্নলিখিত নিয়মটি দেব: আপনি যদি সংগ্রহের মাঝখানে ঘন ঘন উপাদানগুলি সন্নিবেশ (বা অপসারণ) করতে যাচ্ছেন তবে LinkedList ব্যবহার করা ভাল । অন্য সব ক্ষেত্রে, ArrayList আরও ভাল কাজ করে।"
"আমরা আরও উন্নত পাঠে সেগুলিকে কীভাবে গঠন করা হয় তা নিয়ে আলোচনা করব, কিন্তু আপাতত আমরা সেগুলি ব্যবহার করে অনুশীলন করব।"
GO TO FULL VERSION