运算符 > 未定义参数类型 Object, int
The operator > is undefined for the argument type(s) Object, int
我正在编写代码以使用以下代码查找字符串中的第一个重复字符
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() > 1 时出现错误。
错误是 The operator > is undefined for the argument type(s) Object, int
如果 p.getValue() returns int 那么大于和小于运算符应该工作
改变
for(Map.Entry p : charMap.entrySet())
到
for(Map.Entry<Character,Integer> p : charMap.entrySet())
当您使用原始 Map.Entry
时,编译器不知道您的条目的值为 Integer
s。
您需要参数化您的 Map.Entry
:
for(Map.Entry<Character, Integer> p : charMap.entrySet()){
...否则它被解释为原始 Map.Entry
,相当于 Map.Entry<Object, Object>
,因此出现问题。
如果您使用普通 Map.Entry
,那么就编译器而言,键和值字段是基本类型 Object
。如果您使用 Map.Entry<Character, Integer>
,则键和值将分别为 Character
和 Integer
。
我正在编写代码以使用以下代码查找字符串中的第一个重复字符
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() > 1 时出现错误。 错误是 The operator > is undefined for the argument type(s) Object, int 如果 p.getValue() returns int 那么大于和小于运算符应该工作
改变
for(Map.Entry p : charMap.entrySet())
到
for(Map.Entry<Character,Integer> p : charMap.entrySet())
当您使用原始 Map.Entry
时,编译器不知道您的条目的值为 Integer
s。
您需要参数化您的 Map.Entry
:
for(Map.Entry<Character, Integer> p : charMap.entrySet()){
...否则它被解释为原始 Map.Entry
,相当于 Map.Entry<Object, Object>
,因此出现问题。
如果您使用普通 Map.Entry
,那么就编译器而言,键和值字段是基本类型 Object
。如果您使用 Map.Entry<Character, Integer>
,则键和值将分别为 Character
和 Integer
。