এই ধরণের তালিকা / মানচিত্রের জন্য কি কোনও ডেটা কাঠামো রয়েছে?


22

আমি যা চাই তার জন্য সম্ভবত একটি নাম আছে তবে আমি এটি সম্পর্কে সচেতন নই। আমার LinkedHashMapজাভাতে অনুরূপ কিছু দরকার , তবে নির্দিষ্ট কীটিতে কোনও মান না থাকলে এটি যেখানে 'পূর্ববর্তী' মানটি দেয়।

এটি হ'ল, আমার কাছে একটি পূর্ণসংখ্যা কী দ্বারা সঞ্চিত বস্তুর একটি তালিকা রয়েছে (যা আমার ক্ষেত্রে সময়ের এককগুলিতে থাকে):

; key->value
10->A
15->B
20->C

সুতরাং, আমি যদি 0-9 কী এর মানটির জন্য জিজ্ঞাসা করি তবে তা ফিরে আসবে null। বিশেষ অংশটি হ'ল আমি যদি 10 <= i <= 14 কিছু জিজ্ঞাসা করি তবে এটি এ ফিরে আসবে বা i> = 20 এর জন্য এটি সি ফিরে আসবে

এর জন্য কি কোনও ডাটা স্ট্রাকচার আছে?


আমি জানি না কোনও বাস্তবায়িত আছে কিনা তবে আপনি সম্ভবত এটি করার জন্য বিদ্যমানটিকে প্রসারিত করতে পারেন। এটি আপনার পারফরম্যান্সের লক্ষ্যগুলি পূরণ করবে কিনা বা পুনর্লিখন ব্যতীত না আমি জানি না ...
রিগ

1
দুর্দান্ত প্রশ্নের জন্য +1। তিনটি স্বল্প সংখ্যার প্রতিনিধি সহ বেশিরভাগ লোকেরা "দয়া করে আমার হোমওয়ার্ক করুন" প্রকারের প্রশ্ন জিজ্ঞাসা করে। এখানে মামলা হয় না।
তুলাইনস কর্ডোভা

উত্তর:


33

আপনি একটি নেভিগিব্যাপ মানচিত্রের সন্ধান করছেন । এটি সোর্টার্ড ম্যাপের একটি সাব টাইপ যাতে মানচিত্রটি সাজানো ছাড়াও কিছু ফাংশন রয়েছে। দ্রষ্টব্য যে নেভিগিয়েবল মানচিত্রটি "সোর্টড ম্যাপ ইন্টারফেসটিকে ত্যাগ করার উদ্দেশ্যে তৈরি করা হয়েছে" " ( জাভা এসই 6 সংগ্রহ ফ্রেমওয়ার্ক বর্ধন )। বর্তমানে প্রয়োগ করা সমস্ত কিছু যা SortedMapবাস্তবায়িত করে NavigableMapএবং সম্ভবত এটি সত্যই থেকে যায়।

বিশেষত, যে পদ্ধতিটি floorKey(K key)"প্রদত্ত চাবিটির চেয়ে কম বা তার সমান সর্বাধিক কী প্রদান করে বা এমন কী না থাকলে শূন্য হয়।

এটি এমন অনেক পদ্ধতির মধ্যে একটি যা আপনাকে নির্দিষ্ট কী বা মানচিত্রের সাবম্যাপগুলি পেতে দেয়।

  • সিলিং / মেঝে (প্যারামিটারের চেয়ে উচ্চ / নিম্নতর প্রবেশ)
  • অবতরণ ক্রমে কী বা মানচিত্রের অ্যাক্সেস
  • মাথা / লেজ (প্রদত্ত কীগুলির চেয়ে এন্ট্রি কম / বেশি)
  • উচ্চ / নিম্ন (পরের কীটি প্যারামিটারের চেয়ে উচ্চ বা কম)
  • সাবম্যাপ (দুটি কী দেওয়া হয়েছে, দুটি কীগুলির মধ্যে থাকা মানচিত্রটি ফিরিয়ে দিন)

- জাভা NavigableMap দুই বাস্তবায়নের হয়েছে TreeMap এবং ConcurrentSkipListMap

আপনি যদি এড়িয়ে যাওয়ার তালিকার ধারণা / বাস্তবায়নের দিকে লক্ষ্য করেন তবে আপনি দেখতে পাবেন যে এ জাতীয় কাঠামো এবং এর অনুসন্ধানগুলি কেন এটি সত্যিই ভাল কাজ করবে।


1+ দুর্দান্ত উত্তর। জাভা এপিআই-তে এই জাতীয় মানচিত্রের অস্তিত্ব কখনও ভাবেনি।
তুলাইনস কর্ডোভা

@ user61852 আমার প্রিয় ডেটাটাইপ হ'ল এড়িয়ে চলা তালিকা এবং আমি এটি দিয়ে ঘুরে দেখলাম। আমি যখন এটি ১. implemented এ বাস্তবায়ন করতে দেখেছি তখন এটি কী কী সরবরাহ করেছিল তা আমি লক্ষ্য করেছিলাম এবং এটির ইন্টারফেসগুলি লক্ষ্য করে এবং এর সাথে এটি আমার পরিচিতি।

এটি সেই ধরণের জিনিস যা আমাকে বোঝায় যে জাভা আপনার সন্ধানের জন্য সর্বাধিক ডিজাইন করা একটি ভাষা।
তুলাইনস কর্ডোভা

1
মনে রাখবেন যে এটি ওপি-র ইস্যুটিকে মোকাবেলা করার সময় উপস্থিত হয়, এটি LinkedHashMapতার উল্লেখ মতো কাজ করে না । আমরাও TreeMapনা ConcurrentSkipListMapসন্নিবেশ সময় দ্বারা আদেশ মত LinkedHashMap, বরং তারা একটি দ্বারা আদেশ হয় Comparatorযদি তারা বাস্তবায়ন বা কী এর প্রাকৃতিক ক্রমানুসার Comparable
মাইকএফএই

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

1

আপনি যা সন্ধান করছেন সেটি হ'ল একটি প্রতীক টেবিল যা আদেশযুক্ত ক্রিয়াকলাপগুলিকে সমর্থন করে। এবং আপনার ক্ষেত্রে এটি ফ্লোর অপারেশন।

প্রতীক টেবিলের হ্যাশ বাস্তবায়নটি দ্রুততম, তবে এটি আদেশিত ক্রিয়াকলাপ সরবরাহ করে না।

কিন্তু প্রতীক টেবিলের গাছ প্রয়োগ রয়েছে। জাভাতে এর একটি উদাহরণ ট্রিম্যাপ ক্লাস

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