2015-09-28 65 views
0

我在一个字符串,如下找到第一个非重复字符工作找到第一个非重复字符的字符值:搞清楚在一个字符串

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(),但是会引发错误。如果我误解了某些东西,请解释我。

回答

1

Map.get返回Integer,因为这就是您的地图中的值。 getKey将返回一个Characterget将返回一个Integer,因为映射中的键是字符且值是整数。 get为您提供您提供的密钥的价值。