2015-09-28 98 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爲您提供您提供的密鑰的價值。