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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @for 中级黑马   /  2014-7-23 21:23  /  894 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

随机生成50个数字(整数),每个数字的范围是[10, 50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。(只用集合,不用数组)

4 个回复

倒序浏览
没有人在嘛,
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.         ArrayList<Integer> arr = getArr();
  3.         Map<Integer, Integer> times = getTimes(arr);
  4.         printIt(times);
  5. }

  6. private static void printIt(Map<Integer, Integer> map) {
  7.         int n = 0;
  8.         for (Integer i : map.keySet()) {
  9.                 int time = map.get(i);
  10.                 System.out.println(i + ":" + time);
  11.                 if (map.get(n) == null) {
  12.                         n = i;
  13.                 } else if (time > map.get(n)) {
  14.                         n = i;
  15.                 }
  16.         }
  17.         System.out.println("largest:\n"+n+":"+map.get(n));
  18. }

  19. private static Map<Integer, Integer> getTimes(ArrayList<Integer> arr) {
  20.         Map<Integer, Integer> map = new HashMap<Integer, Integer>();
  21.         for (Integer i : arr) {
  22.                 if (map.get(i) == null) {
  23.                         map.put(i, 1);
  24.                 } else {
  25.                         map.replace(i, map.get(i) + 1);
  26.                 }
  27.         }
  28.         return map;
  29. }

  30. private static ArrayList<Integer> getArr() {
  31.         ArrayList<Integer> arr;
  32.         arr = new ArrayList<Integer>();
  33.         Random random = new Random();
  34.         for (int i = 0; i < 50; i++) {
  35.                 int j = random.nextInt(41) + 10;
  36.                 arr.add(j);
  37.         }
  38.         return arr;
  39. }
复制代码
回复 使用道具 举报
允许用Map么?允许的话就Map<数字,出现次数>。不允许的话定义一个类包含2个实例变量:数字int n和出现次数int count;
回复 使用道具 举报

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