我正在努力寻找String中的第一个非重复字符,如下所示:
package com.tk.practice;
import java.util.HashMap;
import java.util.Map;
public class FirstNonRepeatedCharacter {
public static void main(String[] args) {
String str = "stress";
char[] ch = str.toCharArray();
int length = ch.length;
//System.out.println(length);
for(int i = 0; i<length;i++){
char character = str.charAt(i);
Map<Character, Integer> map = new HashMap<Character,Integer>();
if(map.containsKey(character)){
map.put(character, map.get(character)+1);
}
else{
map.put(character, 1);
}
for(Map.Entry<Character, Integer> m : map.entrySet()){
//Integer ill = m.getValue();
//Character ch1 = m.getKey();
//if(ill == 1){
System.out.println("Key: "+m.getKey()+" Value: "+m.getValue());
//}
}
}
}}
现在只为每个角色打印一个价值。但我试图理解以下一行:
if(map.containsKey(character)){
map.put(character, map.get(character)+1);
}
因为value
是一个整数值,为什么map.get(character)
不会抛出任何错误,因为map.get(character)
应该检索字符,而不是值?我在考虑使用getKey()
但是会抛出错误。如果我误解了什么,请解释一下。
答案 0 :(得分:1)
Map.get
会返回Integer
,因为这是地图中的值。 getKey
将返回Character
,get
将返回Integer
,因为地图中的键是字符,值是整数。 get
为您提供您提供的密钥的值。