我正在编写一个代码,用以下代码
查找字符串中的第一个重复字符package collectionsExample;
import java.util.*;
class LinkedHashMap1
{
public static void main(String args[]) {
String word = "Hare Krishna";
char[] characters = word.toCharArray();
// build HashMap with character and number of times they appear in String
LinkedHashMap<Character, Integer> charMap = new LinkedHashMap<Character, Integer>();
for (Character ch : characters) {
if (charMap.containsKey(ch)) {
charMap.put(ch, charMap.get(ch) + 1);
} else {
charMap.put(ch, 1);
}
}
System.out.println(charMap);
for(Map.Entry p : charMap.entrySet()){
if(p.getValue() > 1){
System.out.println(p.getKey());
}
}
}
}
但是当我做p.getValue()&gt;时我收到错误1。 错误是运算符&gt;未定义参数类型Object,int 如果p.getValue()返回int,那么大于和小于运算符应该工作
答案 0 :(得分:3)
更改
for(Map.Entry p : charMap.entrySet())
到
for(Map.Entry<Character,Integer> p : charMap.entrySet())
当您使用原始Map.Entry
时,编译器不知道您的条目的值是Integer
s。
答案 1 :(得分:3)
您需要参数化Map.Entry
:
for(Map.Entry<Character, Integer> p : charMap.entrySet()){
...否则它被解释为原始Map.Entry
,相当于Map.Entry<Object, Object>
,因此问题。
答案 2 :(得分:2)
如果使用plain Map.Entry
,那么就编译器而言,键和值字段属于基类型Object
。如果您使用Map.Entry<Character, Integer>
,那么键和值将分别为Character
和Integer
。