Java 运营商>;未为参数类型对象int定义
我正在编写一个代码,用以下代码查找字符串中的第一个重复字符Java 运营商>;未为参数类型对象int定义,java,collections,linkedhashmap,Java,Collections,Linkedhashmap,我正在编写一个代码,用以下代码查找字符串中的第一个重复字符 package collectionsExample; import java.util.*; class LinkedHashMap1 { public static void main(String args[]) { String word = "Hare Krishna"; char[] characters = word.toCharArray(); // buil
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());
}
}
}
}
包集合示例;
导入java.util.*;
类LinkedHashMap1
{
公共静态void main(字符串参数[]){
String word=“Hare Krishna”;
char[]characters=word.toCharArray();
//使用字符和它们在字符串中出现的次数构建HashMap
LinkedHashMap charMap=新LinkedHashMap();
for(字符ch:characters){
if(charMap.containsKey(ch)){
charMap.put(ch,charMap.get(ch)+1);
}否则{
charMap.put(ch,1);
}
}
System.out.println(charMap);
对于(Map.Entry p:charMap.entrySet()){
如果(p.getValue()>1){
System.out.println(p.getKey());
}
}
}
}
但是当我执行p.getValue()>1时,我得到了一个错误。
错误是参数类型对象int的运算符>未定义
如果p.getValue()返回int,则大于和小于运算符应起作用
for(Map.Entry p : charMap.entrySet())
到
for(Map.Entry p:charMap.entrySet())
使用原始Map.Entry
时,编译器不知道条目的值是Integer
s.更改
for(Map.Entry p : charMap.entrySet())
到
for(Map.Entry p:charMap.entrySet())
使用原始
Map.Entry
时,编译器不知道条目的值是Integer
s。您需要参数化Map.Entry
:
for(Map.Entry<Character, Integer> p : charMap.entrySet()){
for(Map.Entry p:charMap.entrySet()){
…否则,它将被解释为原始的
Map.Entry
,它相当于Map.Entry
,因此出现问题。您需要参数化您的Map.Entry
:
for(Map.Entry<Character, Integer> p : charMap.entrySet()){
for(Map.Entry p:charMap.entrySet()){
…否则它将被解释为原始的
Map.Entry
,它相当于Map.Entry
,因此问题就出现了。如果您使用普通的Map.Entry
,那么就编译器而言,键和值字段是基本类型的对象
。如果您使用Map.Entry
,那么键和值将l分别是字符
和整数
。如果使用普通的映射.条目
,那么就编译器而言,键和值字段是基本类型对象
。如果使用映射.条目
,则键和值分别是字符
和整数
直观地说。错误消息非常清楚:p.getValue()返回一个对象,显然无法直接与int进行比较。应该指出的是,所有继承集合的对象,至少在我的经验中,如果未指定,都会将T或E默认为Object。错误消息非常清楚:p.getValue()返回一个对象
,该对象显然不能直接与int进行比较。应该指出的是,所有继承集合的对象,至少在我的经验中,如果未指定,则默认为Object的T或E。@Pravinkotawar不客气!@Pravinkotawar不客气!