黑马程序员技术交流社区

标题: 泛型问题 [打印本页]

作者: 邱成    时间: 2012-10-2 23:03
标题: 泛型问题
本帖最后由 邱成 于 2012-10-3 22:26 编辑

import java.util.*;
public class TestArgsWords{
  private static final int ONE=1;
public static void main(String args[]){

   Map<String,Integer> m = new HashMap<String,Integer>();
  for(int i=0;i<args.length;i++){
   if(!m.containsKey(args)){
    m.put(args,ONE);
  }else{
   int freq = m.get(args);
   m.put(args,freq+1);
   }
   }
   System.out.println(m.size());
   System.out.println(m);
  }
}

运行代码:
D:\java\collection>javac TestArgsWords.java

D:\java\collection>java TestArgsWords aaa bbb  ccc ddd aaa aaa
输出结果:
4
{aaa=3, ddd=1, ccc=1, bbb=1}

里面有一个小问题没明白
int freq = m.get(args); 这句话m.get(args); 是获取他的value,为什么赋给一个int类型的可以实现计数。我是想是不是发现一次aaa 算1次 第二个aaa算第二次?

作者: 高照    时间: 2012-10-2 23:29
表达下个人见解
就这个程序Map<String,Integer> m = new HashMap<String,Integer>();
Key中存的是aaa,bbb,ccc,...
value中存的是相同key已出现的次数,通过对他计数,可以得到相同key出现的次数。
作者: 申振华    时间: 2012-10-3 00:00
不知道楼主要问什么   
目测 :m.put(args[i],freq+1); //这行代码不就是存在相同key,value加1.  不就刚好起到了计数效果吗。
作者: 黄小贝    时间: 2012-10-3 03:45
楼主玩dota波? 比如天梯计算楼主每个英雄获胜的场次~假设所有英雄已经在Map里面了~~

存的格式为 Map<英雄名称,胜场>
{
(JB脸,0)
(英雄A,0)
(英雄B,0)
(英雄C,0)
}

比如你玩你最爱的JB脸~ 赢了~~从Map里面取出看JB脸的胜场是多少~~不管多少~加个1再存进去就是了~~后面的情形类似~~

想知道最后你的JB脸赢了多少次~~getValue("JB脸")就是了




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