উত্তর:
আপনি জাভাতে জেনেরিক আর্গুমেন্ট হিসাবে আদিম ধরণের ব্যবহার করতে পারবেন না। পরিবর্তে ব্যবহার করুন:
Map<String, Integer> myMap = new HashMap<String, Integer>();
সঙ্গে স্বয়ংক্রিয় বক্সিং / আনবক্সিং সেখানে কোডে সামান্য পার্থক্য আছে। অটো-বক্সিং মানে আপনি লিখতে পারেন:
myMap.put("foo", 3);
পরিবর্তে:
myMap.put("foo", new Integer(3));
অটো-বক্সিং মানে প্রথম সংস্করণ স্পষ্টভাবে দ্বিতীয়টিতে রূপান্তরিত হয়। স্ব-আনবক্সিং মানে আপনি লিখতে পারেন:
int i = myMap.get("foo");
পরিবর্তে:
int i = myMap.get("foo").intValue();
অন্তর্নিহিত কলটির intValue()
অর্থ কীটি না পাওয়া গেলে এটি একটি উত্পন্ন করবে NullPointerException
, উদাহরণস্বরূপ:
int i = myMap.get("bar"); // NullPointerException
কারণ মুছে ফেলা টাইপ । বিপরীতে, বলুন, সি # জেনেরিক ধরণের রানটাইম ধরে রাখা হয় না। আপনাকে কেবল এটি করা থেকে বাঁচাতে সুস্পষ্ট কাস্টিংয়ের জন্য তারা কেবল "সিনট্যাকটিক চিনি":
Integer i = (Integer)myMap.get("foo");
আপনাকে উদাহরণ দেওয়ার জন্য, এই কোডটি পুরোপুরি আইনী:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
জিএনইউ ট্র্যাভ এটি সমর্থন করে তবে জেনেরিক ব্যবহার করে না। http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
আপনি আদিম ধরণের ব্যবহার করতে পারবেন না HashMap
। int
, বা double
কাজ না। আপনাকে এর ঘেরের প্রকারটি ব্যবহার করতে হবে। একটি উদাহরণ জন্য
Map<String,Integer> m = new HashMap<String,Integer>();
এখন দুটিই বস্তু, সুতরাং এটি কাজ করবে।
ইন্টটি একটি আদিম ধরণ, আপনি এখানে জাভাতে আদিম ধরণের অর্থ কী তা পড়তে পারেন এবং মানচিত্রটি একটি ইন্টারফেস যা ইনপুট হিসাবে অবজেক্টগুলির মধ্যে রয়েছে:
public interface Map<K extends Object, V extends Object>
অবজেক্টের অর্থ একটি বর্গ, এবং এর অর্থ হ'ল আপনি অন্য শ্রেণি তৈরি করতে পারেন যা এটি থেকে ব্যয় হয় তবে আপনি কোনও শ্রেণি তৈরি করতে পারবেন না যা অন্তর্পূরণ থেকে সীমাবদ্ধ। সুতরাং আপনি অবজেক্ট হিসাবে int ভেরিয়েবল ব্যবহার করতে পারবেন না। আপনার সমস্যার সমাধান আমার কাছে রয়েছে:
Map<String, Integer> map = new HashMap<>();
অথবা
Map<String, int[]> map = new HashMap<>();
int x = 1;
//put x in map
int[] x_ = new int[]{x};
map.put("x", x_);
//get the value of x
int y = map.get("x")[0];
আপনি জেনেরিক আর্গুমেন্টে রেফারেন্স টাইপ ব্যবহার করতে পারেন, আদিম ধরণের নয়। সুতরাং এখানে আপনার ব্যবহার করা উচিত
Map<String, Integer> myMap = new HashMap<String, Integer>();
এবং স্টোর মান হিসাবে
myMap.put("abc", 5);