সেট এবং তালিকা মধ্যে পার্থক্য আমরা প্রকৃত পার্থক্য পেতে আগে

Anonim

অ্যারে লিস্ট এবং লিঙ্কযুক্ত তালিকার মধ্যে পার্থক্য নিয়ে আসা

প্রকৃত পার্থক্যগুলির মধ্যে প্রবেশ করার আগে, আসুন আমরা কি সত্যিই তা জানতে পারি?

সেট কি?

আমরা গণিতের সেটের ধারণার উপর ভিত্তি করে এসেছি এবং এখানে আরো বা তার চেয়ে কম মানে সেট করুন। হ্যাঁ, এটি উপাদানগুলির একটি সংগ্রহ এবং বেশিরভাগ ক্ষেত্রে একই ধরণের উপাদানগুলির একটি সংগ্রহ। আপনি একটি সেট এই উপাদান যোগ করার চেষ্টা করুন এবং বুঝতে মুদ্রণ চেষ্টা করতে পারেন, এটি আসলে সংরক্ষণ করা হয় কিভাবে।

একটি সেট ইনপুট: 20, 50, 10, 30.

এটি আসলে 10, 20, 30, 50 হিসাবে সেট করা হয়।

উপাদানগুলি এখানে সাজানো আছে এবং তাদের সন্নিবেশ করার ক্রম অনুসারে সংরক্ষণ করা হয় না। এটি সেট করার বৈশিষ্ট্যগুলির মধ্যে একটি হল যে এটি সবসময় সংরক্ষণের আগে উপাদানগুলি সাজায় এবং অবশ্যই, এতে ব্যতিক্রম আছে এবং এগুলি হল LinkedhashSet যেহেতু এটি উপাদানগুলির সন্নিবেশের অর্ডার রক্ষণ করে।

--২ ->

কম্পিউটার পদে, সেট কয়েকটি অতিরিক্ত বৈশিষ্ট্য যেমন পদ্ধতি এবং উত্তরাধিকার অন্তর্ভুক্ত রয়েছে। পদ্ধতিগুলি ফাংশনগুলির মতই এবং কিছু কিছু কাজ করে যেমন উপাদানগুলি যোগ করা, সরানো বা পুনরাবৃত্ত করা। আমাদের বেশিরভাগই উত্তরাধিকার শব্দটি সুপরিচিত এবং এর অর্থ এখানে একই। হ্যাঁ, আমরা তার সংগ্রহ থেকে একটি পদ্ধতি অধিষ্ঠিত করতে পারেন, এটি সেট ইন্টারফেস সঙ্গে ব্যবহার করা যেতে পারে, যাতে। আবার আমরা একটি নতুন শব্দ সম্পর্কে কথা বলা হয় i। ঙ। সেট ইন্টারফেস, এবং এটা পদ্ধতি সহ উপাদান সম্পূর্ণ সেট ছাড়া আর কিছুই।

এটি কিভাবে বাস্তবায়িত হবে?

শুধু একটি ভাল বোঝার জন্য, আমরা তার সিন্ট্যাক্স সঙ্গে একটি সেট প্রতিনিধিত্ব করেছেন। নীচের সিনট্যাক্স থেকে, আপনি হ্যাশটেট এবং বৃক্ষসেটের মতো বিভিন্ন ধরণের সেটগুলি চিহ্নিত করতে পারেন।

জাভা আমদানি util। *;

পাবলিক শ্রেণী সেটexample {

পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং আরজি []) {

int count [= 34, 22, 10, 60, 30, 22} {25, 17, 76, 1২, 88, 57};

সেট করুন = নতুন হ্যাশটেট ();

<{ এর জন্য চেষ্টা করুন (int i = 0; i <5; i ++) {

সেট করুন। যোগ (গণনা [আমি]);

}

সিস্টেম। বাইরে। println (সেট);

ট্রিসেট সাজানোসেটে = নতুন ট্রিশেট (সেট);

সিস্টেম। বাইরে। println ("এখানে আমরা সাজানো আউটপুট আছে:");

সিস্টেম। বাইরে। println (sortedSeteg);

সিস্টেম। বাইরে। println ("প্রথম উপাদানটি দেখুন:" + (পূর্ণসংখ্যা) সাজানোসেট। প্রথম ());

সিস্টেম। বাইরে। println ("শেষ উপাদানটি দেখুন:" + (পূর্ণসংখ্যা) সাজানোসেট শেষ ());

}

ধরা (ব্যতিক্রম e) {}

}

}

নিম্নের কোডটি নিম্নরূপঃ

[25, 17, 76, 1২, 88]

এখানে আমাদের সাজানো আউটপুট আছে:

[1২, 17, ২5, 76, 88]

প্রথম উপাদানটি দেখুন: 12 > শেষ উপাদানটি দেখুন: 88

তালিকা কি?

একটি তালিকা একটি সেট কিভাবে সেট অনুরূপ সংগ্রহ প্রসারিত, কিন্তু এটি সন্নিবেশ এর আদেশ বজায় রাখে। আপনি একটি তালিকা নিম্নলিখিত নামগুলি যোগ করার চেষ্টা করুন এবং এটি যোগ করা হয় দেখুন।

একটি তালিকা ইনপুট:

জন, ন্যান্সি, মেরি, এলিস

এটি একটি তালিকায় সংরক্ষিত হয়: জন, ন্যান্সি, মেরি, এলিস।

শুধু যে নির্দেশে তারা ঢোকানো হয় তা লক্ষ্য করুন। আপনি ইঙ্গিত করতে পারেন যে 'জন' হচ্ছে ইনপুট এবং আউটপুটে প্রথম উপাদান এবং সেই একই ক্রম অনুসারে নাম অন্তর্ভুক্ত করা হয়। আমরা তালিকার প্রধান বৈশিষ্ট্য এই এক বিবেচনা করতে পারেন। এটি কিভাবে বাস্তবায়িত হবে?

আসল লিস্ট এবং লিঙ্কেডিলিস্টের মতো নিম্নের সিনট্যাক্সের তালিকার কয়েকটি দিক আমরা দেখি।

জাভা আমদানি util। *;

পাবলিক ক্লাস সংগ্রহসজ্জা {

পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং [] আর্গুম) {

তালিকাটি a1 = নতুন অ্যারেস্ট ();

A1। যোগ ("জন");

A1। যোগ ("ন্যান্সি");

A1। যোগ ("মেরি");

A1। যোগ ("এলিস");

সিস্টেম। বাইরে। println ("অ্যারে এলিস্ট এলিমেন্টস");

সিস্টেম। বাইরে। মুদ্রণ (" t" + a1);

তালিকা l1 = নতুন লিঙ্কডিলিস্ট ();

L1। যোগ ("সিলভিয়া");

L1। যোগ ("অর্জুন");

L1। যোগ ("দীপিকা");

L1। যোগ ("সুসান");

সিস্টেম। বাইরে। println ();

সিস্টেম। বাইরে। println ("লিঙ্কডিলিস্ট উপাদানগুলি");

সিস্টেম। বাইরে। মুদ্রণ (" t" + l1); }}

উপরে সিনট্যাক্সের আউটপুট নিম্নরূপঃ

ArrayList Elements হল

[জন, ন্যান্সি, মেরি, এলিস]

লিঙ্কডিলিস্ট এলিমেন্টস

[সিলভিয়া, অর্জুন, দীপিকা, সুসান]

উপরের কোডটি থেকে এটা খুবই স্পষ্ট যে উভয়ই ArrayList এবং লিংকডিলিস্ট সন্নিবেশকরণ আদেশটি বজায় রাখে।

কিভাবে তারা আলাদা?

পদ্ধতি এবং বিবরণ:

সেট এবং তালিকাের নিজস্ব পদ্ধতি রয়েছে এবং আসুন আমরা তাদের কয়েকটি এখানে দেখি।

  • s। না

সেট - পদ্ধতি

তালিকা - পদ্ধতি 1। যোগ ()
- এটি একটি সংগ্রহের বস্তুগুলি যোগ করা। অকার্যকর যোগ (int সূচক, বস্তু obj) - এটি invoking তালিকা নির্দিষ্ট 'সূচক' বস্তু 'obj' যোগ করে এবং এটি নিশ্চিত করে যে পূর্ববর্তী উপাদানের পরিবর্তে কোনও উপাদানকে ওভাররাইট করা হয় না। 2। পরিষ্কার () -
এটি একটি সংগ্রহ থেকে বস্তু অপসারণ করা হয়। বোুলিয়ান অ্যাডএল (ইনটেনশন ইনডেক্স, সংগ্রহ সি) - এটি সম্পূর্ণ সংগ্রহ 'সি' যোগ করা তালিকাতে এবং 'সূচক' নির্দিষ্ট করে দেয়। এটাও নিশ্চিত করে যে কোন উপাদানের উপরে লেখা নেই। রিটার্ন মান পরীক্ষা করে আমরা এর অপারেশন এর সততা চেক করতে পারি। অন্যথায় পরিবর্তিত সফল হলে এটি 'সত্য' প্রদান করে, এটি একটি মান 'মিথ্যা' প্রদান করে। 3। এর মধ্যে রয়েছে () -
এটিতে সেটটি নির্দিষ্ট বস্তু রয়েছে কি না তা পরীক্ষা করা। বস্তুটি যদি সেটটি সেট থাকে তবে এটি 'সত্য' প্রদান করে। অবজেক্ট পেতে (ইনটেনশন ইনডেক্স) - এটি নির্দিষ্ট 'সূচক' এ উপাদান বা বস্তু ফেরৎ করে। 4। খালি ()
- এই সংগ্রহটি কোন উপাদান হিসাবে এটি সাহায্য করে কিনা তা নির্ধারণ করা হয়। যদি কোন উপাদান না থাকে তবে এটি 'সত্য' একটি মান প্রদান করে। ইন্টিগ্রাইন্ড ইন্ডেক্স (বস্তু obj) - এটি indexOf () পদ্ধতির বিপরীত মত কাজ করে। এটি নির্দিষ্ট অবজেক্টের 'obj' শেষ ঘটনার পুনরাবৃত্তি করে এবং তালিকায় এমন বস্তু না থাকলে মান 1 'ফিরে আসে। অতএব, এটি ধারণ করে () সেট ইন্টারফেসের পদ্ধতি হিসেবে ব্যবহার করা যেতে পারে। 6। অপসারণ ()
- এটি একটি উপাদান একটি উপাদান থেকে পদ্ধতিতে একটি পরামিতি হিসাবে এটি উল্লেখ করে মুছে ফেলতে হয়। লিস্ট ইটারনেট লিস্ট ইটারনেট () - এটি তালিকাটির সূচনা সূচকে একটি যাদুকর ফেরত পাঠায়। 7। আকার ()
- একটি সংগ্রহ আছে যে বস্তুর বা উপাদান সংখ্যা গণনা করা হয়। লিস্ট ইটারনেট লিস্ট ইটারনেট (ইনটেনশন ইনডেক্স) - এটি নির্দিষ্ট 'ইনডেক্স' থেকে শুরু করে invoking তালিকা মাধ্যমে পুনরাবৃত্তি করতে সহায়তা করে। 8। -
অবজেক্ট অপসারণ (ইনটেনশন ইনডেক্স) - এটি নির্দিষ্ট 'সূচক' এ বস্তুটি মুছে ফেলে এবং ফলাফল হিসাবে মুছে ফেলা উপাদানটি ফেরৎ করে। এটি মুছে ফেলার প্রতিফলন প্রদর্শনের ফলশ্রুতি তালিকা সূচকগুলিকেও হ্রাস করে। 9। -
অবজেক্ট সেট (ইন্টিগ্রেশন ইনডেক্স, অবজেক্ট ওজিজ্) - নির্দিষ্ট 'সূচক' এ অবজেক্ট তালিকাতে বস্তু 'obj' প্রদান করা হয়। 10। -
তালিকাটি subList (ইন্ট্রি প্রারম্ভ, ইন্টিগ্রেশন) - সূচী 'শুরু' থেকে সূচকের 'শেষ' তালিকা থেকে বস্তুগুলি অন্তর্ভুক্ত করতে হবে যা পদ্ধতিটি চালু করেছে। সন্নিবেশের আদেশ রক্ষণাবেক্ষণ: সেটগুলি যে উপাদানগুলির মধ্যে ঢোকানো হয় সেগুলির অর্ডার রক্ষণ করে না যখন তালিকাটি বজায় রাখা হয়। LinkedHashSet এর জন্য এই নিয়মটি ব্যতিক্রম হিসাবে এটি সন্নিবেশ করার আদেশটি বজায় রাখে কিন্তু হ্যাসসেট এবং TreeSet এর মতো অন্যান্য সেটগুলি এটি সংরক্ষণ করার আগে উপাদানগুলিকে সাজায়। একই নীচের উদাহরণগুলির সঙ্গে বর্ণনা করা হয়।
  • সেট করুন

ইনপুট: বিড়াল, পুতুল, আপেল

হিসাবে সংরক্ষণ করা: অ্যাপল, বিড়াল, পুতুল।

তালিকা ইনপুট: বিড়াল, পুতুল, আপেল।

হিসাবে সংরক্ষিত: বিড়াল, পুতুল, আপেল

ডুপ্লিকেটের উপস্থিতি:

একটি সেট ডুপ্লিকেটের অনুমতি দেয় না যখন একটি তালিকা এটি অনুমোদন করে। যদি একটি ডুপ্লিকেট মান একটি তালিকাতে যোগ করা হয় তাহলে এটি ওভাররাইট পাওয়া যায়। সেট এবং তালিকা প্রতিলিপি জন্য নমুনা তাকান।

  • ইনপুট সেট করুন: 10, 20, 20, 50.

হিসাবে সংরক্ষিত: 10, 20, 50.

তালিকা ইনপুট: 10, 20, 20, 50.

হিসাবে সংরক্ষিত: 10, 20, 20, 50.

নুল মানগুলি:

একটি সেট শুধুমাত্র একটি নাল মান থাকতে পারে, যখন একটি তালিকা একাধিক নাল মান থাকতে পারে এবং যে কোনও সংখ্যা সীমাবদ্ধ নয়।

  • ইনপুট সেট করুন: নাল, নাল, ম্যান, কুকুর, প্লেন।

হিসাবে সংরক্ষিত: নাল, কুকুর, ম্যান, প্লেনে।

তালিকা ইনপুট: নাল, নাল, ম্যান, কুকুর, প্লেনে।

হিসাবে সংরক্ষিত: নাল, নাল, ম্যান, কুকুর, প্লেনে।

Iterator & ListIterator ব্যবহার করুন:

Iterator পদ্ধতি সেট এবং তালিকা উভয় সঙ্গে ভাল কাজ করে যখন তালিকা ListIterator তালিকা সঙ্গে শুধুমাত্র কাজ করে। তালিকার মাধ্যমে অগ্রগামী এবং পাশাপাশি পশ্চাদ্ধাবন করতে ListIterator ব্যবহার করা যেতে পারে।

  • লেগাসি ক্লাসের উপস্থিতি:

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

  • বাস্তবায়ন:

সেট প্রয়োগের কয়েকটি হ্যাসসেট, লিঙ্কড্যাশএসেট, এবং ট্রিসেট। তালিকার বাস্তবায়নের কয়েকটি হলো অ্যালাইলেস্ট এবং লিঙ্কডেড লিস্ট।

  • সেট এবং তালিকা ব্যবহার করার সময়?

সেট এবং তালিকা ব্যবহার নিছক সন্নিবেশকরণ আদেশের রক্ষণাবেক্ষণের উপর নির্ভর করে।হিসাবে আমরা শিখেছি যে একটি সেট সন্নিবেশ করার আদেশ বজায় রাখে না, আদেশ কম গুরুত্ব যখন এটি ব্যবহার করা যেতে পারে। একইভাবে, তালিকাটি ব্যবহার করুন যখন আপনি সন্নিবেশের ধারাটি বজায় রাখতেও প্রয়োজন।

একটি ট্যাবুলার ফর্ম মধ্যে পার্থক্য:

এস। না

মধ্যে পার্থক্য

সেট করুন তালিকা 1। সন্নিবেশের আদেশ
এটি সন্নিবেশ করার আদেশটি বজায় রাখে। প্রথম স্থানটিতে প্রথম সন্নিবিষ্ট অবশিষ্টাংশ এবং তাই তার মানটি নির্বিশেষে। এটি সন্নিবেশ করার আদেশটি কখনও রক্ষণাবেক্ষণ করে না। 2। পদ্ধতি
এটি অ্যাড (), স্পষ্ট (), (), ধারণকৃত (), মুছে ফেলা () এবং আকার () এর মত পদ্ধতিগুলি ব্যবহার করে। এটি যেমন (add), addAll (), get (), সর্বশেষ ইন্ডেন্ডঅফ (), লিস্ট ইন্টেটারনেট (), প্যারামিটার দিয়ে বা ছাড়া, অপসারণ (), সেট (), এবং সাবওস্ট () 3। ডুপ্লিকেটস
এটি ডুপ্লিকেটের অনুমতি দেয় না এবং এই ধরনের উপস্থিতিগুলির ক্ষেত্রে, মানটিকে ওভাররাইট করা হয়। এটি ডুপ্লেটগুলির অনুমতি দেয়। 4। নিখুঁত মান
এটি সর্বোচ্চ একমাত্র নাল মান থাকতে পারে। এটির কোনও সংখ্যক নল মান থাকতে পারে। 5। ইটারনেটের ব্যবহার () এবং তালিকা ই-এটার ()
এটি কেবলমাত্র পদ্ধতির ওটার ব্যবহার করে ()। এটি ইটারারেটার () উভয়ই ব্যবহার করে এবং তালিকা ই-এটার ()। 6। লেগাসি ক্লাসের উপস্থিতি
কোন লিগ্যাসি শ্রেণী নেই। লেগাসি ক্লাসকে একটি ভেক্টর হিসাবে বলা হয়। 7। বাস্তবায়নগুলি
কয়েকটি সেট ইন্টারফেস প্রয়োগগুলি হল হ্যাশটেট, লিঙ্কড্যাশএসেট এবং ট্রি সেট। তালিকা ইন্টারফেস বাস্তবায়নের কয়েকটি লিংকডলিস্ট এবং অ্যারেলিস্ট। আশা করি, আমরা সেট এবং তালিকাের মধ্যে প্রত্যেক সম্ভাব্য পার্থক্যটি অন্তর্ভুক্ত করেছি। আপনি যদি মনে করেন যে আমরা কিছু মিস করেছি, দয়া করে আমাদের জানান।