আমি অবাক হয়েছি যে আমি এর কোনও দ্রুত উত্তর পাই না। আমি মূলত জাভাতে একটি ডেটাস্ট্রাকচার খুঁজছি যা java.util.List
ইন্টারফেসটি কার্যকর করে , তবে যা এর সদস্যদের সাজানো ক্রমে সঞ্চয় করে stores আমি জানি যে আপনি একটি সাধারণ ব্যবহার করতে পারেন ArrayList
এবং Collections.sort()
এটিতে ব্যবহার করতে পারেন , তবে আমার এমন একটি দৃশ্য রয়েছে যেখানে আমি মাঝে মধ্যে আমার তালিকা থেকে সদস্যদের যোগ করতে এবং পুনরুদ্ধার করি এবং আমি যখনই কোনও সদস্যের ক্ষেত্রে কোনও সদস্য পুনরুদ্ধার করি তখন আমি এটি বাছাই করতে চাই না a নতুন যুক্ত করা হয়েছে। জেডিকে বা তৃতীয় পক্ষের লাইব্রেরিগুলিতে যে কেউ বিদ্যমান তা আমাকে কীভাবে নির্দেশ করতে পারে?
সম্পাদনা : ডেটাস্ট্রাকচারের নকল সংরক্ষণ করতে হবে।
উত্তর এর সংক্ষিপ্তসার : আমি এই সব খুব আকর্ষণীয় এবং অনেক কিছু শিখেছি। আইয়ুব বিশেষভাবে আমার উপরে প্রয়োজনীয়তা অর্জনের চেষ্টা করার ক্ষেত্রে তাঁর অধ্যবসায়ের জন্য উল্লেখ করার দাবি রাখে (মূলত একটি সাজানো java.util.List বাস্তবায়ন যা সদৃশকে সমর্থন করে)। আমি যা বলেছিলাম তার সঠিক উত্তর হিসাবে আমি তার উত্তরকে স্বীকার করেছি এবং আমি যা চেয়েছিলাম তার সঠিক প্রভাব না থাকলেও আমি যা যা খুঁজছিলাম তার নিদর্শনগুলিতে সবচেয়ে বেশি চিন্তাভাবনা করেছিল।
আমি তালিকার ইন্টারফেসে এবং ইন্টারফেসে optionচ্ছিক পদ্ধতিগুলির ধারণার মধ্যে যা মিথ্যা চেয়েছি তার সমস্যা। জাভাডোকের উদ্ধৃতি দিতে:
এই ইন্টারফেসের ব্যবহারকারীর তালিকার প্রতিটি উপাদান সন্নিবেশ করা হয়েছে তার উপর যথাযথ নিয়ন্ত্রণ রয়েছে।
বাছাই করা তালিকায় সন্নিবেশকরণ পয়েন্টের উপরে সঠিক নিয়ন্ত্রণ নেই। তারপরে, আপনাকে ভাবতে হবে আপনি কীভাবে কয়েকটি পদ্ধতি পরিচালনা করবেন। add
উদাহরণস্বরূপ নিন :
পাবলিক বুলিয়ান অ্যাড (অবজেক্ট ও)
Appends the specified element to the end of this list (optional operation).
আপনি এখন উভয়েরই অস্বস্তিকর পরিস্থিতিতে রয়ে গেছেন 1) চুক্তি ভঙ্গ করা এবং অ্যাডের একটি সাজানো সংস্করণ বাস্তবায়ন 2) add
তালিকার শেষে একটি উপাদান যুক্ত করা, আপনার সাজানো ক্রম ভঙ্গ করে 3) add
ছুড়ে ফেলে (তার বিকল্প হিসাবে) ফেলে দেওয়া একটি UnsupportedOperationException
এবং অন্য পদ্ধতি প্রয়োগ করে যা একটি সাজানো ক্রমে আইটেম যুক্ত করে।
অপশন 3 সম্ভবত সেরা, তবে আমি এটি ব্যবহার করতে পারছি না এমন একটি অ্যাড পদ্ধতি এবং ইন্টারফেসের মধ্যে নেই এমন আরও একটি সাজানো অ্যাডড পদ্ধতি থাকা অস্বচ্ছল বলে মনে করি।
অন্যান্য সম্পর্কিত সমাধান (কোনও নির্দিষ্ট ক্রমে):
- java.util.PriorityQueue যা আমি যা চেয়েছিলাম তার চেয়ে সম্ভবত আমার যা প্রয়োজন তার চেয়ে নিকটতম। একটি সারি আমার ক্ষেত্রে অবজেক্টগুলির সংগ্রহের সর্বাধিক সুনির্দিষ্ট সংজ্ঞা নয়, তবে কার্যত এটি আমার যা প্রয়োজন তা কার্যত কার্যকর করে।
- নেট.সোর্সফোর্জন.নাইট.ইটিল.সোর্টড লিস্ট । যাইহোক, এই বাস্তবায়ন
add(Object obj)
পদ্ধতিতে বাছাইয়ের মাধ্যমে তালিকার ইন্টারফেসের চুক্তি ভঙ্গ করে এবং উদ্ভটভাবে এর কোনও কার্যকর পদ্ধতি নেইadd(int index, Object obj)
। সাধারণ পরিস্থিতিতে sensক্যমত্য প্রস্তাবthrow new UnsupportedOperationException()
এই পরিস্থিতিতে একটি ভাল পছন্দ হতে পারে। - পেয়ারার ট্রিমলটিসেট সেট সেট বাস্তবায়ন যা সদৃশগুলিকে সমর্থন করে
- ca.odell.glazedlists.SortList এই শ্রেণিটি তার জাভডোকে সতর্কতার সাথে আসে:
Warning: This class breaks the contract required by List