কী পার্থক্য – তালিকা বনাম সেট
অধিকাংশ প্রোগ্রামিং ল্যাঙ্গুয়েজ একই ধরনের ডেটার একটি সেট সংরক্ষণ করতে অ্যারে ব্যবহার করে। অ্যারের একটি প্রধান ত্রুটি হল, একবার অ্যারের আকার ঘোষণা করা হলে, এটি পরিবর্তন করা যায় না। প্রোগ্রামার যদি অ্যারের আকারের চেয়ে বেশি একটি মান সঞ্চয় করতে চায়, তাহলে তাকে একটি নতুন অ্যারে তৈরি করা উচিত এবং বিদ্যমান উপাদানগুলিকে নতুন অ্যারেতে অনুলিপি করা উচিত। এই পরিস্থিতিতে, সংগ্রহ ব্যবহার করা যেতে পারে। সংগ্রহের সমর্থনে উপাদান যোগ করা, উপাদান মুছে ফেলা এবং অন্যান্য অনেক ক্রিয়াকলাপ করা সম্ভব। জাভা-এর মতো প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের সংগ্রহ পাওয়া যায়। তালিকা এবং সেট হল সংগ্রহের অনুক্রমের ইন্টারফেস।অন্যান্য ইন্টারফেসের বেস ইন্টারফেস হল সংগ্রহ। তালিকা এবং সেটের মধ্যে মূল পার্থক্য হল যে তালিকা একই উপাদান একাধিকবার সংরক্ষণ করতে সমর্থন করে যখন সেট একই উপাদান একাধিকবার সংরক্ষণ করা সমর্থন করে না। অতএব, একটি সেট নকলের অনুমতি দেয় না।
তালিকা কি?
তালিকাটি একটি ইন্টারফেস যা সংগ্রহের ইন্টারফেসকে প্রসারিত করে। কালেকশন ইন্টারফেসে বেশ কিছু পদ্ধতি আছে। যোগ পদ্ধতি একটি উপাদান যোগ করতে সাহায্য করে। 'রিমুভ মেথড' হল একটি উপাদান অপসারণ করা। একাধিক উপাদান যোগ করার জন্য 'অ্যাডঅল মেথড' আছে যখন 'রিমুভ অ্যাল মেথড' রয়েছে সংগ্রহ থেকে উপাদানগুলি সরানোর জন্য। ধারণ পদ্ধতিটি একটি নির্দিষ্ট বস্তু তালিকায় উপস্থিত আছে কিনা তা খুঁজে পেতে সহায়তা করে। 'কনটেইনসঅল' হল সংগ্রহে বস্তুর একটি সেট আছে কিনা তা খুঁজে বের করা। তালিকার আইটেমগুলি লুপ করার জন্য পুনরাবৃত্তিকারী পদ্ধতি ব্যবহার করা হয়। তালিকা যেমন সংগ্রহকে প্রসারিত করে, সংগ্রহের সমস্ত পদ্ধতি তালিকার অন্তর্গত। এই পদ্ধতিগুলি ব্যতীত, তালিকায় পাওয়া এবং সেট করার মতো পদ্ধতি রয়েছে।প্রোগ্রামার get মেথড ব্যবহার করে একটি নির্দিষ্ট সূচকে একটি মান পেতে পারে। প্রোগ্রামার সেট পদ্ধতি ব্যবহার করে একটি নির্দিষ্ট সূচকে একটি মান সেট করতে পারে। 'indexOf' একটি উপাদানের সূচক খুঁজে বের করতে ব্যবহৃত হয়।
একটি তালিকায়, অবস্থান অনুযায়ী অপারেশন করা যেতে পারে। প্রোগ্রামার সূচীতে যোগ করা ডেটা উপাদান সরবরাহ করতে পারে। তাই এটি নির্দিষ্ট সূচকে যুক্ত হবে। যদি প্রোগ্রামার একটি সূচী না দেয় তবে উপাদানটি তালিকার শেষে যোগ করা হবে। এটি সন্নিবেশিত ক্রম বজায় রাখে। যদি উপাদান 1 যোগ করা হয় এবং তারপরে উপাদান 2 যোগ করা হয়, তাহলে element1 হবে element2 এর আগে।
চিত্র 01: তালিকা এবং সেট করুন
ArrayList, LinkedList, Vector হল কিছু ক্লাস যেগুলো List বাস্তবায়ন করে। একটি অ্যারেলিস্টে, একটি উপাদান অ্যাক্সেস করা দ্রুত কিন্তু সন্নিবেশ করা এবং মুছে ফেলা কম।ArrayList থ্রেড-নিরাপদ নয়। একাধিক থ্রেড থেকে একই ArrayList অ্যাক্সেস করা একই ফলাফল নাও দিতে পারে। একটি লিঙ্কডলিস্টে, উপাদানগুলি পিছনে এবং এগিয়ে উভয়ের সাথে সংযুক্ত থাকে। একটি LinkedList ব্যবহার করে উপাদান সন্নিবেশ করা এবং মুছে ফেলা ArrayList থেকে দ্রুত। লিঙ্কডলিস্ট তালিকা এবং সারি উভয়ই প্রয়োগ করে। ভেক্টর অ্যারেলিস্টের মতো, তবে এটি ট্রেড-সেফ কারণ সমস্ত পদ্ধতি সিঙ্ক্রোনাইজ করা হয়েছে।
সেট কি?
সেট হল একটি ইন্টারফেস যা সংগ্রহের ইন্টারফেসকে প্রসারিত করে। যেহেতু সেট ইন্টারফেস সংগ্রহকে প্রসারিত করে, সংগ্রহের সমস্ত পদ্ধতিও সেটের অন্তর্গত। একটি সেট ডুপ্লিকেশন মান সমর্থন করে না। অতএব, প্রোগ্রামার একই উপাদান দুইবার সংরক্ষণ করতে পারে না। এটি উপাদানগুলির একটি অনন্য সেট বজায় রাখে। SortedSet ইন্টারফেস সেট ইন্টারফেস প্রসারিত করে। SortedSet সাজানো ক্রমে উপাদান বজায় রাখে। NavigableSet ইন্টারফেস SortedSet প্রসারিত করে। নেভিগেবলসেট নেভিগেশন পদ্ধতি প্রদান করে যেমন নিম্ন, মেঝে, ছাদ ইত্যাদি।
HashSet, LinkedHashSet, এবং TreeSet হল কিছু ক্লাস যা সেট ইন্টারফেস বাস্তবায়ন করে।হ্যাশসেট সেট ইন্টারফেস প্রয়োগ করে। এটি সন্নিবেশিত ক্রম বজায় রাখে না। যদি মানগুলি a, x, b হিসাবে সন্নিবেশ করা হয় তবে এটি x, a, b হিসাবে সংরক্ষণ করতে পারে। LinkedSet সন্নিবেশিত ক্রম বজায় রাখে। যদি উপাদানগুলি a, x, b ক্রমে সন্নিবেশ করা হয় তবে সংরক্ষণের ক্রম হবে a, x, b। TreeSet সেট এবং NavigableSet প্রয়োগ করে। এটি সন্নিবেশের ক্রম বজায় রাখে না তবে উপাদানগুলিকে সাজানো ক্রমে সংরক্ষণ করে। যদি সন্নিবেশিত ক্রম a, c, b হয়, তাহলে উপাদানগুলি a, b, c হিসাবে সংরক্ষণ করা হবে। সমস্ত HashSet, LinkedHashSet এবং TreeSet-এ কোনো ডুপ্লিকেট উপাদান থাকবে না।
তালিকা এবং সেটের মধ্যে মিল কী?
- লিস্ট এবং সেট উভয় ইন্টারফেস সংগ্রহ ইন্টারফেস প্রসারিত করে।
- লিস্ট এবং সেট সমর্থন ক্রিয়াকলাপ উভয়ই যেমন উপাদান যোগ করা, অপসারণ করা।
লিস্ট এবং সেটের মধ্যে পার্থক্য কী?
তালিকা বনাম সেট |
|
লিস্ট ইন্টারফেস হল কালেকশনের সাব ইন্টারফেস যাতে সূচকের উপর ভিত্তি করে সন্নিবেশ করা, মুছে ফেলার মতো ক্রিয়াকলাপগুলি সম্পাদন করার পদ্ধতি রয়েছে৷ | সেট ইন্টারফেস হল সংগ্রহের একটি সাব ইন্টারফেস যেখানে অনন্য উপাদান বজায় রেখে উপাদানগুলি সন্নিবেশ করা, মুছে ফেলার মতো ক্রিয়াকলাপগুলি সম্পাদন করার পদ্ধতি রয়েছে৷ |
ক্লাস | |
ArrayList, Vector, এবং LinkedList হল ক্লাস যা তালিকা ইন্টারফেস বাস্তবায়ন করে। | HashSet, LinkedHashSet, এবং TreeSet হল ক্লাস যা সেট ইন্টারফেস বাস্তবায়ন করে। |
এলিমেন্ট ডুপ্লিকেশন | |
লিস্ট উপাদানগুলির নকল সমর্থন করে৷ | সেট উপাদানগুলির অনুলিপি সমর্থন করে না। উপাদানগুলি অনন্য৷ |
সারাংশ – তালিকা বনাম সেট
সংগ্রহগুলি গতিশীলভাবে উপাদান সংরক্ষণ করতে ব্যবহৃত হয়। প্রোগ্রামিং ভাষা যেমন জাভা সংগ্রহ ইন্টারফেস প্রদান করে। তালিকা এবং সেট দুটি ইন্টারফেস যা সংগ্রহ ইন্টারফেসের অন্তর্গত। উভয় ইন্টারফেস সংগ্রহ প্রসারিত. এই নিবন্ধটি তালিকা এবং সেটের মধ্যে পার্থক্য নিয়ে আলোচনা করেছে। তালিকা এবং সেটের মধ্যে মূল পার্থক্য হল যে তালিকা একই উপাদান একাধিকবার সংরক্ষণ করতে সমর্থন করে যখন সেট একই উপাদান একাধিকবার সংরক্ষণ করা সমর্থন করে না। সেট সর্বদা অনন্য উপাদান বজায় রাখে।