জাভাতে হ্যাশম্যাপ এবং হ্যাশটেবলের মধ্যে পার্থক্য

লেখক: Laura McKinney
সৃষ্টির তারিখ: 2 এপ্রিল 2021
আপডেটের তারিখ: 5 মে 2024
Anonim
ALL ABOUT RELEVEL BACK-END TEST |  QUESTIONS + PRO TIPS + SYLLABUS
ভিডিও: ALL ABOUT RELEVEL BACK-END TEST | QUESTIONS + PRO TIPS + SYLLABUS

কন্টেন্ট


হ্যাশম্যাপ এবং হ্যাশটেবল, উভয়ই একটি প্রতিনিধিত্ব করতে ব্যবহৃত হয় অবজেক্টের গ্রুপ যে প্রতিনিধিত্ব করা হয় জোড়া। প্রতি জোড় বলা হয় প্রবেশ অবজেক্ট। দ্য সংগ্রহ হ্যাশম্যাপ এবং হ্যাশটেবলের বিষয়বস্তু দ্বারা প্রবেশের তালিকা উল্লেখ করা হয়। কোনও সংগ্রহে থাকা কীগুলি অবশ্যই অনন্য বা স্বতন্ত্র হতে হবে। হ্যাশম্যাপ এবং হ্যাশটেবলের মধ্যে পার্থক্য হ্যাশ মানচিত্র বিশেষত মানচিত্র ইন্টারফেস প্রয়োগ করে যেখানে হ্যাশ টেবিল অভিধান ক্লাস (উত্তরাধিকার শ্রেণি) প্রসারিত করে যা মানচিত্র ইন্টারফেস বাস্তবায়নের জন্য পুনরায় নকশাকৃত। অন্যান্য গুরুত্বপূর্ণ পার্থক্য হ্যাশম্যাপের বস্তুগুলি unsynchronized যদিও হ্যাশটেবলের জিনিসগুলি সিঙ্ক্রোনাইজ.

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

  1. তুলনা রেখাচিত্র
  2. সংজ্ঞা
  3. মূল পার্থক্য
  4. মিল
  5. উপসংহার

তুলনা রেখাচিত্র

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


হাশম্যাপ সংজ্ঞা

হ্যাশম্যাপ একটি ক্লাস যা কার্যকর করে মানচিত্র ইন্টারফেস এবং প্রসারিত AbstractMap বর্গ হ্যাশ টেবিল ব্যবহার করে। হ্যাশম্যাপের অবজেক্টটি একটি সংগ্রহ / সেটকে বোঝায় জোড় যেখানে প্রতিটি কী একটি নির্দিষ্ট মান ম্যাপ করা হয়। কোনও সংগ্রহের কীগুলি অবশ্যই মানটি পুনরুদ্ধার করতে ব্যবহৃত হওয়ায় তা অবশ্যই অনন্য হতে হবে। অন্যদিকে, সংগ্রহের মানগুলি নকল করা যায় can হ্যাশম্যাপ ক্লাস এবং হ্যাশম্যাপক্লাসের নির্মাতাদের ঘোষণা নিম্নরূপ:

/ * কে কী উপস্থাপন করে, এবং ভি মান * / শ্রেণির হ্যাশম্যাপকে উপস্থাপন করে / * হ্যাশম্যাপ শ্রেণীর নির্মাতারা * / হ্যাশম্যাপ () হ্যাশম্যাপ (মানচিত্র <? প্রসারিত কে,? ভি> এম প্রসারিত) হ্যাশম্যাপ (অন্তঃক্ষমতা) হ্যাশম্যাপ (অন্তঃক্ষমতা, ফ্লোট ভরাট অনুপাত)

প্রথম কনস্ট্রাক্টর হ'ল ডিফল্ট কনস্ট্রাক্টর যা হ্যাশম্যাপের একটি খালি অবজেক্টটি 16 টির ডিফল্ট ক্ষমতা এবং 0.75 এর ডিফল্ট ভরাট অনুপাত সহ আরম্ভ করে initial দ্বিতীয় নির্মাণকারী মিটার মান সহ হ্যাশ মানচিত্রটি আরম্ভ করে। তৃতীয় নির্মাতা আর্গুমেন্ট "ক্ষমতা" প্রদানের মানের সাথে সামঞ্জস্যিক প্রাথমিক ক্ষমতা সহ একটি হ্যাশ মানচিত্র তৈরি করে। চতুর্থ নির্মাতা একটি ক্ষমতা এবং পরামিতিগুলিতে সরবরাহ করা অনুপাত সহ হ্যাশ মানচিত্রটি আরম্ভ করে। আসুন এখন শিখি কীভাবে একটি হ্যাশ মানচিত্রে এন্ট্রিগুলি ফিড করা যায়।


হাশম্যাপ এইচএম = নতুন হাশম্যাপ (); এইচএম.পুট ("অজয়", 275); এইচএম.পুট ("বিজয়", 250); এইচএম.পুট ("জনি", 150); এইচএম.পুট ("জর্দান", 200); System.out.ln (এইচএম); / * আউটপুট * / {বিজয় = 250, জনি = 150, অজয় ​​= 275, জর্দান = 200

উপরের কোডে, আপনি দেখতে পাচ্ছেন যে আমি একটি খালি হ্যাশম্যাপ অবজেক্ট তৈরি করেছি HM ডিফল্ট প্রাথমিক ক্ষমতা এবং ডিফল্ট পূরণ অনুপাত সহ। তারপরে আমি হ্যাশ মানচিত্রে পুট (কে, ভি) পদ্ধতিটি ব্যবহার করে চারটি এন্ট্রি প্রবেশ করালাম যা মানটির কীটি ম্যাপ করে। আপনি পর্যবেক্ষণ করতে পারেন যে এন্ট্রিগুলি আপনি যে ক্রমগুলি খাওয়ান সেগুলি ক্রম অনুসারে এড হয় না কারণ সন্নিবেশ ক্রম ঠিক করা হয়নি। এখন, একটি ক্ষেত্রে বিবেচনা করুন যে আপনার ইতিমধ্যে একটি এন্ট্রি রয়েছে হ্যাশ মানচিত্রে এবং এর পরে আপনি পুট (কে 1, ভি 5) সন্নিবেশ করানোর চেষ্টা করবেন, অর্থাৎ আপনি একই কীটি আলাদা মান দিয়ে মানচিত্র করার চেষ্টা করছেন। তারপরে পুড পদ্ধতিটি পুরানো মান V1 কে নতুন মান V2 এর সাথে প্রতিস্থাপন করবে এবং পুরানো মান V1 প্রদান করবে, অন্যথায়, আমরা যদি কখনই কোনও কী এর মান প্রতিস্থাপনের চেষ্টা না করি তবে পুট পদ্ধতিটি সেই কীটির জন্য নাল ফেরায়।

হ্যাশটেবল সংজ্ঞা

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

/ * কে কীটি নির্দিষ্ট করে এবং ভি কী / / শ্রেণির হ্যাশটেবলের সাথে সম্পর্কিত মান নির্দিষ্ট করে / * হ্যাশটেবল * / হ্যাশটেবল () হ্যাশটেবল (ইনট সাইজ) হ্যাশটেবল (ইনট সাইজ, ফ্লোট ভরাট রেটিও) হ্যাশটেবল (মানচিত্র <? কে কে প্রসারিত করে? ভি> মি প্রসারিত)

উপরের কোডে প্রথম কনস্ট্রাক্টর হ'ল ডিফল্ট কনস্ট্রাক্টর যা একটি ক্লাস হ্যাশটেবলের একটি খালি অবজেক্ট তৈরি করে, এর ডিফল্ট আকার 11 এবং ডিফল্ট ভরাট অনুপাত 0.75 হয়। দ্বিতীয় নির্মাণকারী প্যারামিটার "আকার" এর সাথে উপলব্ধ মানের সাথে মাপের সাথে একটি হ্যাশ টেবিল তৈরি করে। তৃতীয় নির্মাতা একটি আকার এবং পরামিতিগুলিতে সরবরাহ করা একটি অনুপাত সহ একটি হ্যাশ টেবিল তৈরি করে। চতুর্থ নির্মাতা হ্যাশ টেবিলটি এম। মান দিয়ে শুরু করে। আসুন কীভাবে সন্নিবেশ করা যায় তা শিখি হ্যাশ টেবিলের জুড়ি।

হ্যাশটেবল এইচটিএল = নতুন হ্যাশটেবল (); এইচটি.পুট (নতুন হ্যাশকোড (2), 275); এইচটি.পুট (নতুন হ্যাশকোড (12), 250); এইচটি.পুট (নতুন হ্যাশকোড (16), 150); এইচটি.পুট (নতুন হ্যাশকোড (8), 200); System.out.ln (এইচটি); / * আউটপুট * / {12 = 250, 16 = 150,2y = 275, 8 = 200

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

  1. হাশম্যাপ প্রয়োগগুলি মানচিত্র ইন্টারফেস এবং একটি বিমূর্ত শ্রেণি প্রসারিত, AbstractMap যদিও, হ্যাশটেবল বিমূর্ত শ্রেণি প্রসারিত করে অভিধানযা পরবর্তীতে বাস্তবায়নের জন্য পুনর্গঠিত হয়েছিল, যা একটি উত্তরাধিকার শ্রেণিও মানচিত্র ইন্টারফেস.
  2. হ্যাশম্যাপ অবজেক্টটি হ'ল unsynchronized অর্থাত্ একাধিক থ্রেড একই সাথে এটিতে কাজ করতে পারে এবং তাই এটি থ্রেড নিরাপদে নয় objects অন্যদিকে, হ্যাশটেবলের বস্তুগুলি সিঙ্ক্রোনাইজ অর্থ্যাৎ যদি কোনও থ্রেড হ্যাশটেবলের কোনও বস্তুর উপর পরিচালনা করতে চায় তবে সেটিকে সেই বস্তুর উপর একটি লক অর্জন করতে হবে যাতে অন্য কোনও থ্রেড সেই বস্তুকে অ্যাক্সেস করতে না পারে এবং তাই এটি থ্রেড নিরাপদ।
  3. হাশম্যাপে কীটি ফিরে আসতে পারে শুধু একবার নাল, এবং মান ফিরে আসতে পারে একাধিক বার নাল। অন্যদিকে, কোনও কী কখনই নুলকে ফিরে আসতে পারে না কারণ হ্যাশ কোড মানটি ব্যবহার করার জন্য এটি ব্যবহৃত হয় যা সূচি হিসাবে সংরক্ষণের জন্য ব্যবহৃত হয় জোড়া এবং না কোনও মান নুলকে ফিরিয়ে দিতে পারে।
  4. হ্যাশম্যাপ শ্রেণিতে একটি হ্যাশ টেবিলের ডিফল্ট ক্ষমতা 16 যদিও হ্যাশটেবলে একটি হ্যাশ টেবিলের ডিফল্ট ক্ষমতা 11.
  5. দ্য iterator হাশম্যাপ এন্ট্রিগুলি অতিক্রম করতে পারে। অন্যদিকে, হ্যাশটেবল সরাসরি Iterator সমর্থন করে না এবং তাই সাধারণত গণনাকারী হ্যাশটেবলের এন্ট্রিগুলি ট্র্যাভার করার জন্য ব্যবহৃত হয়।

মিল:

  • হ্যাশম্যাপ এবং হ্যাশটেবল উভয়ই এর ডেটা স্ট্রাকচার ব্যবহার করে হ্যাশ টেবিল.
  • হ্যাশম্যাপ এবং হ্যাশটেবল উভয় প্রয়োগ মানচিত্র ইন্টারফেস
  • সন্নিবেশ অর্ডার সংরক্ষণ করা হয় না উভয় হ্যাশম্যাপ এবং হ্যাশটেবল এবং কী ব্যবহার করে প্রাপ্ত হ্যাশ কোডের উপর ভিত্তি করে।
  • হ্যাশম্যাপ এবং হ্যাশটেবলে কীগুলি অবশ্যই থাকা উচিত অনন্য যদিও, মানগুলি হতে পারে সদৃশ.
  • হ্যাশম্যাপ এবং হ্যাশটেবল উভয়ই থাকতে পারে ভিন্ন ভিন্ন বস্তু কী এবং মান উভয়ের জন্য।
  • হ্যাশম্যাপ এবং হ্যাশটেবল, উভয়ই প্রয়োগ Serializable এবং Cloneable ইন্টারফেস কিন্তু না, এলোমেলো অ্যাক্সেস.
  • হ্যাশম্যাপ এবং হ্যাশটেবল উভয়ের ডিফল্ট পূরণ অনুপাত রয়েছে 0.75.
  • হ্যাশম্যাপ এবং হ্যাশটেবল উভয়ই পুনরুদ্ধারের জন্য বা অনুসন্ধান অপারেশন।

উপসংহার:

হ্যাশম্যাপ পারফরম্যান্সে আরও ভাল কারণ এটির বস্তুগুলি অচ্ছলঙ্কিত এবং একাধিক থ্রেড একই সাথে এটি পরিচালনা করতে পারে এবং তাই এটি হ্যাশটেবলের চেয়ে দ্রুত।