List.copyOf
Mod অপরিবর্তনীয় তালিকা
তুমি জিজ্ঞেস করেছিলে:
তালিকার অনুলিপি দেওয়ার জন্য অন্য কোনও উপায় নেই?
জাভা 9 List.of
আক্ষরিক ব্যবহারের List
জন্য অজানা কংক্রিটের শ্রেণিটির অবিশ্বাস্য create
LocalDate today = LocalDate.now( ZoneId.of( "Africa/Tunis" ) ) ;
List< LocalDate > dates = List.of(
today.minusDays( 1 ) , // Yesterday
today , // Today
today.plusDays( 1 ) // Tomorrow
);
সেই সাথে আমরাও পেলাম List.copyOf
। এই পদ্ধতিটিও List
অজানা কংক্রিটের শ্রেণীর একটি আপত্তিযোগ্য পরিবর্তন করে ।
List< String > colors = new ArrayList<>( 4 ) ; // Creates a modifiable `List`.
colors.add ( "AliceBlue" ) ;
colors.add ( "PapayaWhip" ) ;
colors.add ( "Chartreuse" ) ;
colors.add ( "DarkSlateGray" ) ;
List< String > masterColors = List.copyOf( colors ) ; // Creates an unmodifiable `List`.
"অপরিবর্তনযোগ্য" দ্বারা আমরা তালিকার উপাদানগুলির সংখ্যা বোঝাতে চাইছি এবং প্রতিটি স্লটে একটি উপাদান হিসাবে রাখা অবজেক্টটি রেফারেন্স করা হয়েছে। আপনি উপাদানগুলি যুক্ত করতে, বাদ দিতে বা প্রতিস্থাপন করতে পারবেন না। তবে প্রতিটি উপাদানের মধ্যে থাকা অবজেক্ট রিভার্ট হতে পারে বা পরিবর্তন হতে পারে ।
colors.remove( 2 ) ; // SUCCEEDS.
masterColors.remove( 2 ) ; // FAIL - ERROR.
IdeOne.com এ এই কোডটি সরাসরি চালিত দেখুন ।
তারিখ.আর স্ট্রিং (): [2020-02-02, 2020-02-03, 2020-02-04]
color.toString (): [অ্যালিসব্লিউ, পাপিয়াওয়াইপ, ডার্কস্লেট গ্রে]
মাস্টারল্যান্ড. টো স্ট্রিং (): [অ্যালিসব্লিউ, পাপায়াওয়াইপ, চার্ট্রেস, ডার্কস্লেট গ্রে]
আপনি অবজেক্ট রেফারেন্স সম্পর্কে জিজ্ঞাসা করেছেন। অন্যরা যেমন বলেছে, আপনি যদি একটি তালিকা তৈরি করেন এবং এটি দুটি রেফারেন্স ভেরিয়েবলগুলিকে (পয়েন্টার) নির্ধারণ করেন তবে আপনার এখনও কেবল একটি তালিকা রয়েছে। উভয়ই একই তালিকার দিকে ইঙ্গিত করে। আপনি যদি তালিকাটি সংশোধন করতে উভয় পয়েন্টার ব্যবহার করেন তবে উভয় পয়েন্টারই পরে পরিবর্তনগুলি দেখতে পাবেন, কারণ মেমরিতে কেবল একটি তালিকা রয়েছে।
সুতরাং আপনাকে তালিকার একটি অনুলিপি তৈরি করতে হবে। আপনি যদি সেই অনুলিপিটি অনিবার্যযোগ্য হতে চান তবে এই উত্তরে List.copyOf
আলোচিত পদ্ধতিটি ব্যবহার করুন । এই পদ্ধতির ক্ষেত্রে, আপনি দুটি পৃথক তালিকাগুলি সমাপ্ত করেছেন, প্রত্যেকটি উপাদানগুলির সাথে একই সামগ্রীতে অবজেক্টের রেফারেন্স রাখে। উদাহরণস্বরূপ, String
রঙগুলিকে উপস্থাপন করার জন্য আমাদের উপরে বর্ণিত উদাহরণস্বরূপ , রঙের অবজেক্টগুলি কোথাও মেমরির আশেপাশে ভাসছে। দুটি তালিকাগুলি একই রঙের বস্তুগুলিতে পয়েন্টার ধারণ করে। এখানে একটি চিত্র আছে।
প্রথম তালিকাটি colors
পরিবর্তনযোগ্য। এর অর্থ হ'ল উপরের কোডটিতে দেখা যায় এমন কিছু উপাদান সরানো যেতে পারে, যেখানে আমরা মূল তৃতীয় উপাদান Chartreuse
(2 = অর্ডিনাল 3 এর সূচক) সরিয়েছি । এবং উপাদান যুক্ত করা যেতে পারে। আর উপাদানের কিছু অন্যান্য দিকে নির্দেশ পরিবর্তন করা যাবে String
যেমন OliveDrab
বা CornflowerBlue
।
বিপরীতে, চারটি উপাদান masterColors
স্থির হয়। অপসারণ, কোনও সংযোজন এবং কোনও অন্য রঙের বিকল্প নেই। এই List
বাস্তবায়নটি অবিশ্বাস্য।