前幾天刷leetcode-majorityElement時碰到一泛型問題,用到的代碼如下:
HashMap hashMap=new HashMap<Integer,Integer>();//注釋為正確寫法//HashMap<Integer,Integer> hashMap=new HashMap<Integer,Integer>(); if (hashMap.containsKey(n) ) hashMap.put(n,hashMap.get(n)+1);
報錯在第5行,"+"運算符類型錯誤,hashMap.get(n)為Object型,1為int型
原先我以為由于java的類型擦除,那么第一行可以不用這樣聲明
HashMap<Integer,Integer> hashMap=new HashMap<Integer,Integer>();
而事實上若不寫HashMap<Integer,Integer>它認為類型聲明為為Object,另有一種復雜的解決方法:
hashMap.put(n,(int)hashMap.get(n)+1);
這是將Object強制轉換為int
新聞熱點
疑難解答