1. পাত্রে এবং সংগ্রহ

কন্টেইনার বা সংগ্রহগুলি হল এমন ক্লাস যা আপনাকে একসাথে একাধিক বস্তু সংরক্ষণ এবং প্রক্রিয়া করতে দেয়। আপনি ইতিমধ্যে দুই ধরনের পাত্রে জানেন: অ্যারে এবং তালিকা।

জাভাতে কয়েক ডজন সংগ্রহ রয়েছে, যার প্রত্যেকটি নিজস্ব নির্দিষ্ট উপায়ে উপাদান সংরক্ষণ করে। এখানে তাদের কিছু আছে:

সংগ্রহ ক্লাস বর্ণনা
List
ArrayList
তালিকা
LinkedList
যোজিত তালিকা
Vector
ভেক্টর
Stack
স্ট্যাক
Set
HashSet
সেট
TreeSet
LinkedHashSet
Queue
PriorityQueue
কিউ
ArrayQueue
Map
HashMap
মানচিত্র/অভিধান
TreeMap
HashTable

নামগুলো এখানে কিছুটা অস্পষ্ট। বেশিরভাগ প্রোগ্রামিং ভাষায়, এই সমস্ত ডেটা কাঠামোকে সংগ্রহ বলা হয়, তবে জাভাতে নয়। জাভাতে, এই ক্লাসগুলির মধ্যে কিছু Collectionইন্টারফেস বাস্তবায়ন করে, অন্যরা তা করে না।

তদনুসারে, সংগ্রহগুলিকে বিস্তৃত অর্থে সংগ্রহ এবং সংকীর্ণ অর্থে সংগ্রহে বিভক্ত করা হয় (শুধুমাত্র সেইগুলি যা Collectionইন্টারফেস বাস্তবায়ন করে)।

তাই বিভ্রান্তি এড়াতে, যখন আমরা সংগ্রহের কথা বলি তখন আমরা শব্দের সংকীর্ণ অর্থে বোঝাই, অর্থাৎ ক্লাস যা ইন্টারফেস বাস্তবায়ন করে Collection। , Listএবং প্রকারগুলি সমস্ত সংগ্রহ SetQueueব্যাপক অর্থে সংগ্রহগুলিকে সাধারণত কন্টেইনার বলা হয় । এই ধরনের Mapএবং অ্যারে অন্তর্ভুক্ত.


2. HashSetসংগ্রহ

ক্লাসটি HashSetএকটি সাধারণ সেট সংগ্রহ। অনেক উপায়ে, এটি ক্লাসের অনুরূপ ArrayList। কিছু উপায়ে, এটি একটি আরও আদিম সংস্করণ।

আপনি HashSetএকটি বিবৃতি ব্যবহার করে একটি বস্তু তৈরি করতে পারেন যেমন:

HashSet<Type> name = new HashSet<Type>();

Typeউপাদানের ধরন কোথায় আমরা HashSetসংগ্রহে সংরক্ষণ করব।

ক্লাসের HashSetএই মত পদ্ধতি আছে:

পদ্ধতি বর্ণনা
void add(Type value)
valueসংগ্রহে উপাদান যোগ করে
boolean remove(Type value)
valueসংগ্রহ থেকে উপাদান সরান . যদি এই ধরনের একটি উপাদান ছিল
রিটার্নtrue
boolean contains(Type value)
সংগ্রহে একটি valueউপাদান আছে কিনা তা পরীক্ষা করে
void clear()
সংগ্রহ সাফ, সমস্ত উপাদান অপসারণ
int size()
সংগ্রহে উপাদানের সংখ্যা প্রদান করে

এখানে একটি সেট ব্যবহার করার একটি উদাহরণ।

আসুন একটি প্রোগ্রাম লিখি যা ব্যবহারকারীকে বিদায় জানায় যদি সে হ্যালো বলে। এটিকে আরও আকর্ষণীয় করতে, আমরা আমাদের প্রোগ্রামটিকে বিভিন্ন ভাষায় "হ্যালো" বোঝার ক্ষমতা দেব।

কোড বিঃদ্রঃ
HashSet<String> set = new HashSet<String>();

set.add("Hello");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
উপাদান সংরক্ষণ করে এমন একটি HashSetবস্তু তৈরি করুন। আমরা ভেরিয়েবলে বিভিন্ন ভাষায় শুভেচ্ছা যোগ করি । কনসোল থেকে একটি লাইন পড়ুন। যদি স্ট্রিংটি আমাদের অভিবাদনের সেটে থাকে, তাহলে আমরা বিদায় জানাই। String


set









3. সেট

সংগ্রহটি Setউপাদানগুলির একটি সেট ধরে রাখার জন্য ডিজাইন করা হয়েছে। এজন্য একে Set(সেট) বলা হয়। এই সংগ্রহ তিনটি বৈশিষ্ট্য আছে.

একটি সেট অপারেশন

একটি সেটের সাথে আপনি শুধুমাত্র তিনটি জিনিস করতে পারেন: সেটটিতে উপাদান যোগ করুন, সেট থেকে উপাদানগুলি সরান এবং সেটটিতে একটি নির্দিষ্ট উপাদান রয়েছে কিনা তা পরীক্ষা করুন। এটাই.

কোন নির্দেশ নেই

এই সংগ্রহের উপাদানগুলির সূচক নেই৷ আপনি একটি সূচক দ্বারা একটি উপাদান পেতে পারেন না, বা একটি নির্দিষ্ট সূচকে একটি সংগ্রহে একটি মান লিখতে পারেন না৷ একটি সেটের নেই get()এবং set()পদ্ধতি আছে।

অনন্য উপাদান

একটি সেটের সমস্ত উপাদান অনন্য। একটি তালিকার বিপরীতে, একটি সেটে একটি উপাদানের শুধুমাত্র একটি উদাহরণ থাকতে পারে। একটি বস্তু সেটে থাকে বা না থাকে - কোন তৃতীয় বিকল্প নেই। আপনি রঙের সেটে তিনবার কালো যোগ করতে পারবেন না। এটি হয় আছে বা এটি নেই।

উপাদান খোঁজা

আপনি যখন একটি নতুন উপাদান যোগ করেন, একটি উপাদান সরান, বা একটি সেটে একটি উপাদান বিদ্যমান কিনা তা পরীক্ষা করেন, উপাদানটির জন্য একটি অনুসন্ধান পদ্ধতিতে সঞ্চালিত হয়। পাস করা উপাদানটিকে প্রথমে সংগ্রহের উপাদানগুলির সাথে তুলনা করা হয় hashCode(), এবং তারপর যদি মানগুলি hashCode()মিলে, দ্বারা প্রত্যাবর্তন করা হয় equals()



4. সংগ্রহ তুলনা করা: ListবনামSet

আসুন দুটি ধরণের সংগ্রহের তুলনা করি: Listএবং Setআমরা প্রধান পার্থক্যগুলি দেখব, যখন একটি অন্যটির চেয়ে বেশি সুবিধাজনক এবং তদ্বিপরীত।

আসুন উদাহরণ হিসাবে খেলনা ব্যবহার করে তালিকা এবং সেট তুলনা করার চেষ্টা করি।

List(তালিকা) সংগ্রহটি খেলার ঘরের দেয়াল বরাবর সাজানো খেলনার সেটের মতো। আপনি তালিকার শেষে একটি খেলনা যোগ করতে পারেন। আপনার যদি সত্যিই প্রয়োজন হয়, আপনি এটিকে মাঝখানেও ঢোকাতে পারেন (তবে বিদ্যমান কিছু খেলনা সরাতে হবে)।

প্রতিটি খেলনা একটি সূচক আছে. আপনি একটি খেলনাকে এর সূচী অনুসারে উল্লেখ করতে পারেন এবং খেলনা নম্বর 7 কে খেলনা নম্বর 13 দিয়ে প্রতিস্থাপন করতে পারেন। আপনি তালিকা থেকে খেলনা নম্বর 4 সরাতে পারেন। অবশেষে, আপনি তালিকার প্রতিটি খেলনার সূচক শিখতে পারেন।

Set(সেট) সংগ্রহটি মেঝের মাঝখানে খেলনার স্তূপের মতো। আপনি গাদা একটি খেলনা যোগ করতে পারেন, এবং আপনি গাদা থেকে একটি খেলনা সরাতে পারেন। কিন্তু এই খেলনাগুলির সাথে সম্পর্কিত একটি নির্দিষ্ট সূচক নেই।

অথবা ধরুন আপনি আপনার সন্তানের জন্মদিনের জন্য একটি খেলনা বেছে নিচ্ছেন। প্রথমত, আপনি ভাবুন যে তার কাছে ইতিমধ্যেই খেলনা আছে কিনা। সমস্ত খেলনা যা তিনি ইতিমধ্যেই খেলনাগুলির একটি সেট তৈরি করেছেন যা আপনি কিনতে পছন্দ করবেন না।

এই দৃষ্টিকোণ থেকে, আপনি দেখতে পাচ্ছেন যে "ইতিমধ্যে বিদ্যমান খেলনা" এর একটি সেটে খেলনাগুলির ক্রম কোন ব্যাপার নয়, বা জন্মদিনের ছেলেটির একটি নির্দিষ্ট খেলনার দুটি দৃষ্টান্ত থাকলে তা কোন ব্যাপার না। আপনি প্রতিটি খেলনার ক্রম বা সংখ্যা আগ্রহী নন। সেটে বিদ্যমান প্রতিটি অনন্য খেলনা জানার বিষয়ে আপনি যা যত্নশীল।

এই ধরনের ক্ষেত্রে, আপনি Setসংগ্রহ প্রয়োজন. এর সবচেয়ে জনপ্রিয় বাস্তবায়ন হল HashSetক্লাস।