找出字符串中第一个非重复字符的字符值

时间:2015-09-28 03:03:35

标签: java hashmap

我正在努力寻找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()但是会​​抛出错误。如果我误解了什么,请解释一下。

1 个答案:

答案 0 :(得分:1)

Map.get会返回Integer,因为这是地图中的值。 getKey将返回Characterget将返回Integer,因为地图中的键是字符,值是整数。 get为您提供您提供的密钥的值。