A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱成 中级黑马   /  2012-10-2 23:03  /  1325 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邱成 于 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算第二次?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
表达下个人见解
就这个程序Map<String,Integer> m = new HashMap<String,Integer>();
Key中存的是aaa,bbb,ccc,...
value中存的是相同key已出现的次数,通过对他计数,可以得到相同key出现的次数。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不知道楼主要问什么   
目测 :m.put(args[i],freq+1); //这行代码不就是存在相同key,value加1.  不就刚好起到了计数效果吗。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
楼主玩dota波? 比如天梯计算楼主每个英雄获胜的场次~假设所有英雄已经在Map里面了~~

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

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

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

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马