আপনি জাভাতে কীভাবে একটি অভিধান তৈরি করবেন? [বন্ধ]


236

আমি একটি অভিধান প্রয়োগ করতে চেষ্টা করছি (শারীরিক বইয়ের মতো)। আমার কাছে শব্দের একটি অর্থ এবং তার অর্থ রয়েছে।

জাভা কী / মান জোড়া হিসাবে শব্দের একটি তালিকা এবং তাদের অর্থগুলি সংরক্ষণ করতে কোন ডেটা স্ট্রাকচার / প্রকার সরবরাহ করে।

কী কী দিয়েছি, আমি কীভাবে মানটি খুঁজে পেতে এবং ফিরিয়ে দিতে পারি?


24
ঠিক আছে, প্রশ্নটির উপর মনোনিবেশ করার চেতনায়, ব্যবহারকারী নয়, আমি আবার খুলতে ভোট দিচ্ছি। আমি নিশ্চিত যে এই ব্যবহারকারীর এখনই কোর্স শেষ হয়েছে। ;) এটি স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 1540673 /… এর সদৃশ , তবে আমি মনে করি যে উত্তরগুলি এখানে আরও ভাল।
আদি ইনবার

উত্তর:


313

আপনি একটি চাইবেন Map<String, String>Mapইন্টারফেস বাস্তবায়নকারী ক্লাসগুলির মধ্যে রয়েছে (তবে সীমাবদ্ধ নয়):

প্রতিটি নির্দিষ্ট পরিস্থিতির জন্য ডিজাইন / অপ্টিমাইজড (আরও তথ্যের জন্য তাদের নিজ নিজ ডক্সে যান)। HashMapসম্ভবত সবচেয়ে সাধারণ; ডিফল্ট যেতে।

উদাহরণস্বরূপ (একটি ব্যবহার করে HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
প্রাণীর ধরণ

1
@ ক্র্যাঞ্চার এটি প্রয়োগ করে Map(জাভাদোকটি পরীক্ষা করে দেখুন)
আর্শাজি

1
@আর্শাজি আমার সন্দেহ আছে যে অভিধানে আমরা সমস্ত স্ট্রিং ম্যানুয়ালি ম্যাপ করি বা আমি বলতে পারি যে আমরা ম্যানুয়ালি সমস্ত শব্দের অর্থ সঞ্চয় করে রেখেছি। সুতরাং আমার প্রশ্নটি হ'ল ডাবির (ডাম্প) অভিধানের ফাইলগুলির মতো শব্দগুলি এবং তার অর্থ / সংজ্ঞা আনার মতো কোনও উপায় রয়েছে যাতে আমরা প্রতিটি শব্দের অর্থ নিজেই যুক্ত করতে এড়াতে পারি
বিঘ্নেশ গুরসালে

@ বিগনেশগুরসালে ছাড়ের সময় আপনার ডেটা কাঠামো তৈরি করতে আপনাকে একটি পুট পদ্ধতি ব্যবহার করতে হবে। একটি ডিস্ক থেকে ফাইলটি পড়ার মত একটি কমান্ডের কথা ভাবেন এবং এটিকে মেমোরিতে রাখুন (র‌্যাম) যাতে আপনি এটি দিয়ে কাজ করতে পারেন। আপনার যদি এমন কোনও ফাইল থাকে যা আপনি লোড অটোতে ডেটা স্ট্রাকচার হিসাবে লোড করতে চান আপনার জাভা বসন্তের দিকে নজর দেওয়া দরকার তবে এটি জটিল।
ড্যান সিবারোভস্কি - এমএসএফটি

5
যাইহোক, আপনাকে দ্বিতীয়বার <স্ট্রিং, স্ট্রিং> অন্তর্ভুক্ত করার দরকার নেই। আপনি কেবল করতে পারেনMap<String, String> map = new HashMap<>();
স্যামুয়েল নয়েস

আপনি কনসেন্টার হ্যাশম্যাপটি উল্লেখ করতে ভুলে গেছেন যা হ্যাশটেবলের চেয়ে বেশি ব্যবহারযোগ্য
আর্সেনিয়াস

80

এটি পাঠ্য (স্ট্রিং) এর অভিধান তৈরি করে:

Map<String, String> dictionary = new HashMap<String, String>();

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

dictionary.put("key", "value");
String value = dictionary.get("key");

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

Map<String, String> dictionary = new Map<String, String>();

এটি সঠিকভাবে কাজ করে।


3
dictionary["key"]কাজ করবে না - এটি হওয়া উচিত dictionary.get("key")
আর্শাজি

21
সত্য, সম্ভবত কিছু সি # পিছলে গেছে :)
স্মার্টক 8

12

মানচিত্র ইন্টারফেস এবং হ্যাশম্যাপের মতো একটি বাস্তবায়ন ব্যবহার করুন


1
একটি সমাধানের একটি লিঙ্ক স্বাগত, তবে দয়া করে আপনার উত্তরটি কার্যকর না হওয়া নিশ্চিত করুন: লিঙ্কটির চারপাশে প্রসঙ্গটি যুক্ত করুন যাতে আপনার সহ ব্যবহারকারীদের কিছু ধারণা থাকতে পারে এটি কী এবং কেন সেখানে রয়েছে, তবে আপনি পৃষ্ঠার সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন লক্ষ্য পৃষ্ঠাটি অনুপলব্ধ ক্ষেত্রে লিঙ্কটি পুনরায় সংযুক্ত করুন। লিঙ্কের চেয়ে সামান্য বেশি উত্তরগুলি মুছতে পারে।
ফেলিক্সএসএফডি

6

একটি বিমূর্ত শ্রেণীর অভিধান আছে

http://docs.oracle.com/javase/6/docs/api/java/util/Dictionary.html

তবে এটি বাস্তবায়ন প্রয়োজন।

জাভা আমাদের একটি দুর্দান্ত বাস্তবায়ন দেয় যা হ্যাশটেবল

http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html


6
Dictionaryঅপ্রচলিত এবং বাস্তবায়নগুলির কোনও এটি প্রসারিত করে না।
asgs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.