黑马程序员技术交流社区

标题: 利用map知识点,获取字符串“kakga”中每一个字母出现的次数 [打印本页]

作者: 泡沫__opt    时间: 2014-11-26 20:32
标题: 利用map知识点,获取字符串“kakga”中每一个字母出现的次数
  1. <p>package question;

  2. import java.util.TreeMap;

  3. /**
  4. * 利用map知识点,获取字符串“kalskga”中每一个字母出现的次数
  5. *
  6. * 例:a(2)b(4)f(1)
  7. *
  8. * @author Administrator
  9. *
  10. */
  11. public class Qtest19 {
  12.         public static void main(String[] args) {
  13.                 String str = "kalskga";
  14.                 // 将字符串转换成char数组
  15.                 char[] ch = str.toCharArray();
  16.                 //调用charToTreeMap()
  17.                 TreeMap<Character, Integer> tm = charToTreeMap(ch);
  18.                 System.out.println(tm);
  19.         }

  20.         public static TreeMap<Character, Integer> charToTreeMap(char[] ch) {
  21.                 // 创建TreeMap对象
  22.                 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
  23.                 for (int i = 0; i < ch.length - 1; i++) {
  24.                         int n = 1;
  25.                         for (int j = 1 + i; j < ch.length; j++) {
  26.                                 if(ch[i] == ch[j]){
  27.                                         n++;
  28.                                 }
  29.                         }
  30.                         tm.put(ch[i], n);
  31.                 }
  32.                 return tm;
  33.         }
  34. }</p><p>
  35. </p><p>
  36. </p><p>
  37. </p><p>
  38. </p><p>
  39. </p><p>哪里出问题了?求指教啊……
  40. </p>
复制代码


作者: LuckyMe    时间: 2014-11-26 21:23
本帖最后由 LuckyMe 于 2014-11-26 21:47 编辑

第33行,TreeMap 存入键值对的时候新值会替换老值。如果k出现了2次,第一个k存入(k,2),第二个k存入(k,1)。n每次开始都是1,这样的话出现3次及以上的字母也会变成2次呢。还是毕老师视频中的那个方法好啊。

作者: 泡沫__opt    时间: 2014-11-27 10:58
LuckyMe 发表于 2014-11-26 21:23
第33行,TreeMap 存入键值对的时候新值会替换老值。如果k出现了2次,第一个k存入(k,2),第二个k存入(k,1)。n ...

谢了~~搞明白了~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2