আমি এককভাবে লিঙ্কযুক্ত তালিকাটি লেখার সিদ্ধান্ত নিয়েছি এবং অভ্যন্তরীণ সংযুক্ত নোড কাঠামোটিকে অচল করার জন্য পরিকল্পনা নিয়েছিলাম।
যদিও আমি ছিনতাই করেছিলাম। বলুন আমার কাছে নিম্নলিখিত লিঙ্কযুক্ত নোড রয়েছে (পূর্ববর্তী add
ক্রিয়াকলাপ থেকে ):
1 -> 2 -> 3 -> 4
এবং বলুন আমি একটি সংযুক্ত করতে চাই 5
।
এটি করার জন্য, যেহেতু নোড 4
অপরিবর্তনীয়, তাই আমার একটি নতুন অনুলিপি তৈরি করা দরকার 4
, তবে এর next
ক্ষেত্রটি একটি নতুন নোডের সাথে প্রতিস্থাপন করতে হবে 5
। সমস্যা এখন, 3
পুরানো উল্লেখ করা হয় 4
; সংযুক্ত ছাড়া একটি 5
। এখন আমার অনুলিপি করা দরকার 3
, এবং অনুলিপিটির next
রেফারেন্সের জন্য এর ক্ষেত্রটি প্রতিস্থাপন করা উচিত 4
, তবে এখন 2
পুরনো উল্লেখ করা হচ্ছে 3
...
বা অন্য কথায়, একটি সংযোজন করতে, পুরো তালিকাটি অনুলিপি করা দরকার বলে মনে হচ্ছে।
আমার প্রশ্নগুলো:
আমার চিন্তা কি সঠিক? পুরো কাঠামোটি অনুলিপি না করে কোনও অ্যাপেনড করার কোনও উপায় আছে কি?
স্পষ্টতই "কার্যকর জাভা" তে পুনরুদ্ধার রয়েছে:
শ্রেণিগুলিকে পরিবর্তনযোগ্য করা উচিত যদি না তাদের পক্ষে পরিবর্তনীয় করার জন্য খুব ভাল কারণ থাকে ...
এটা কি মিউচ্যালিটির জন্য ভাল কেস?
আমি মনে করি না যে এটি প্রস্তাবিত উত্তরের একটি সদৃশ, কারণ আমি নিজেই তালিকার কথা বলছি না; স্পষ্টতই ইন্টারফেসের সাথে সামঞ্জস্য রাখতে পরিবর্তনীয় হতে হবে (নতুন তালিকাটি অভ্যন্তরীণভাবে রাখা এবং গেটারের মাধ্যমে এটি পুনরুদ্ধার করার মতো কিছু না করে second দ্বিতীয় চিন্তায়, এমনকি এটির জন্য কিছু পরিব্যক্তি প্রয়োজন; এটি কেবল সর্বনিম্ন রাখা হবে)। আমি তালিকার অভ্যন্তরীন অবশ্যই অপরিবর্তনীয় কিনা তা নিয়ে কথা বলছি।
CopyOnWritexxx
বহু-থ্রেডিংয়ের জন্য অবিশ্বাস্যরূপে ব্যয়বহুল ক্লাস ব্যবহার করা হয়। কেউ সংগ্রহ আশা করে না যে সংগ্রহগুলি সত্যই অপরিবর্তনীয় (যদিও এটি কিছুটা