ঘোষণা hash1
হিসেবে HashMap<String, ?>
dictates যে পরিবর্তনশীল hash1
কোনো ধরে রাখতে পারেন HashMap
কী আছে String
এবং মান কোন প্রকার।
HashMap<String, ?> map;
map = new HashMap<String, Integer>();
map = new HashMap<String, Object>();
map = new HashMap<String, String>();
উপরের সমস্তটি বৈধ, কারণ ভেরিয়েবল map
এই হ্যাশ মানচিত্রগুলির যে কোনও সংরক্ষণ করতে পারে। এই ভেরিয়েবলটি হ্যাশম্যাপটি ধারণ করে এর মান ধরণের কী তা বিবেচনা করে না।
একটি ওয়াইল্ড কার্ড রয়ে নেই না , কিন্তু, যদি আপনি আপনার মানচিত্রে মধ্যে বস্তুর কোনো ধরনের করা যাক। প্রকৃতপক্ষে, উপরের হ্যাশ ম্যাপের সাহায্যে, আপনি map
ভেরিয়েবলটি ব্যবহার করে এর মধ্যে কিছুই রাখতে পারবেন না :
map.put("A", new Integer(0));
map.put("B", new Object());
map.put("C", "Some String");
উপরের সমস্ত পদ্ধতি কলগুলির একটি সংকলন-সময় ত্রুটির ফলাফল ঘটবে কারণ জাভা জানে না যে ভিতরে থাকা হ্যাশম্যাপের মান ধরণটি map
কী।
আপনি এখনও হ্যাশ মানচিত্র থেকে একটি মান পেতে পারেন। যদিও আপনি "মানটির ধরণ জানেন না", (কারণ আপনি জানেন না যে আপনার চলকের অভ্যন্তরে কী ধরণের হ্যাশ মানচিত্র রয়েছে), আপনি বলতে পারেন যে সমস্ত কিছুই একটি উপশ্রাহক Object
এবং তাই, আপনি যা যা মানচিত্র থেকে বেরিয়ে আসেন is টাইপটি অবজেক্টের হবে:
HashMap<String, Integer> myMap = new HashMap<>();// This variable is used to put things into the map.
myMap.put("ABC", 10);
HashMap<String, ?> map = myMap;
Object output = map.get("ABC");// Valid code; Object is the superclass of everything, (including whatever is stored our hash map).
System.out.println(output);
উপরের কোডের ব্লকটি কনসোলে 10 টি মুদ্রণ করবে।
সুতরাং, সমাপ্ত করার জন্য, HashMap
ওয়াইল্ডকার্ড সহ একটি ব্যবহার করুন যখন আপনি যত্ন নেন না (যেমন, এটি কোনও ব্যাপার নয়) কী কী প্রকারেরHashMap
, উদাহরণস্বরূপ:
public static void printHashMapSize(Map<?, ?> anyMap) {
// This code doesn't care what type of HashMap is inside anyMap.
System.out.println(anyMap.size());
}
অন্যথায়, আপনার প্রয়োজনীয় প্রকারগুলি নির্দিষ্ট করুন:
public void printAThroughZ(Map<Character, ?> anyCharacterMap) {
for (int i = 'A'; i <= 'Z'; i++)
System.out.println(anyCharacterMap.get((char) i));
}
উপরের পদ্ধতিতে, আমাদের জানতে হবে যে মানচিত্রের কীটি হ'ল একটি Character
, অন্যথায়, এর থেকে মানগুলি পেতে কী ধরণের ব্যবহার করতে হবে তা আমরা জানতাম না। সমস্ত বস্তুর একটি toString()
পদ্ধতি রয়েছে তবে মানচিত্রটির মানগুলির জন্য যে কোনও ধরণের অবজেক্ট থাকতে পারে। আমরা এখনও মান মুদ্রণ করতে পারেন।