私は、キーが文字列であり、値がその文字列が何回読み取られたのかを示すソートマップで使用するカスタムイライザを作成しています。 私はそれを実行すると、私はこのエラーを取得:Javaマップエントリの文字列キャスティングの問題
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map$Entry at comp2402a1.Part8$1.compare(Part8.java:21)
私は、この鋳造エラーを取得しています理由を把握するように見えることはできません。誰でも助けてくれれば幸いです。
は、ここに私のコードです:
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
//Custom comparator
Comparator<Map.Entry<String, Integer>> mapCompare = new Comparator<Map.Entry<String, Integer>>(){
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if (o1.getValue()-o2.getValue() != 0){
return o1.getValue()-o2.getValue();
} else {
return o1.getKey().compareTo(o2.getKey());
}
}
};
//Read lines into a HashMap & count instance #s
HashMap<String, Integer> hMap = new HashMap();
for (String line = r.readLine(); line != null; line = r.readLine()) {
if (hMap.get(line)==null) {
hMap.put(line,1);
w.println("1");
} else {
hMap.put(line, hMap.get(line)+1);
}
}
//Put objects into sorted map w/custom sort and output
SortedMap<String, Integer> sMap = new TreeMap(mapCompare);
sMap.putAll(hMap);
for (Map.Entry<String, Integer> e : sMap.entrySet()){
w.println(e.getKey());
}
}
エラーの原因は次のうちどれですか? – shmosel
'Comparator> 'で' TreeMap 'を作成することはできません。それは 'Comparator 'を期待しています。未処理の型を使用していない場合は、 'new TreeMap <>(mapCompare)'でエラーをキャッチした可能性があります。 –
shmosel
実際にルックアップのためのマップが必要ですか、またはキー/値ペアの順序付きシーケンスが必要ですか? – shmosel