java找出一个数组中出现次数最多的那个元素(用HashSet很新颖)

方法一:

[java]  view plain  copy
  1. import java.util.*;  
  2. public class TestMain {  
  3.     private static HashMap<String, Integer> map;  
  4.     public static HashMap<String, Integer> mostEle(String[] strArray) {  
  5.        map = new HashMap<String, Integer>();  
  6.        String str = "";  
  7.        int count = 0;  
  8.        int result = 0;  
  9.        for (int i = 0; i < strArray.length; i++)  
  10.            str += strArray[i];  
  11.        for (int i = 0; i < strArray.length; i++) {  
  12.            String temp = str.replaceAll(strArray[i], "");  
  13.            count = (str.length() - temp.length()) / strArray[i].length();  
  14.            if (count > result) {  
  15.               map.clear();  
  16.               map.put(strArray[i], count);  
  17.               result = count;  
  18.            } else if (count == result)  
  19.               map.put(strArray[i], count);  
  20.        }  
  21.        return map;  
  22.     }  
  23.     public static void main(String args[]) {  
  24.        String[] strArray = { "11""11""2""2""4""5""4" };  
  25.        HashMap<String, Integer> result = mostEle(strArray);  
  26.        ArrayList<Integer> c = new ArrayList<Integer>(result.values());  
  27.        Set<String> s = result.keySet();  
  28.        System.out.print("一共有" + result.size() + "元素最多。它们分别是");  
  29.        System.out.print(s);  
  30.        System.out.println(",分别出现了" + c.get(0) + "次。");  
  31.     }  
  32. }  

方法二:

[java]  view plain  copy
  1. public class TestMain {  
  2. public static void main(String[] args) {  
  3.     Object array[]={1,2,3,4,5,6,23,12,12};//建立数组存放取出状态的时间  
  4.     Set<Object> s = new HashSet<Object>();// HashSet用来去掉重复  
  5.     for (Object o : array) {  
  6.        s.add(o);  
  7.     } // 现在的集合s中无重复的包含array中的所有元素  
  8.     Object[] obj = s.toArray();// 把集合s中的元素存入数组obj2中  
  9.     int[] n = new int[obj.length];// 这个数组用来存放每一个元素出现的次数  
  10.     int max = 0;  
  11.     for (int i = 0; i < obj.length; i++) {  
  12.        int cout = 0;  
  13.        for (int j = 0; j < array.length; j++) {  
  14.            if (obj[i].equals(array[j]))  
  15.               cout++;  
  16.            // 用obj中的元素跟array中的每一个比较,如果相同cout自增  
  17.        }  
  18.        n[i] = cout;// 每一个元素出现的次数存入数组n  
  19.                   // 数组n的下标i跟数组obj的下标是一一对应的。  
  20.        if (max < cout) {// 得到元素出现次数最多是多少次  
  21.            max = cout;  
  22.        }  
  23.     }  
  24.     for (int i = 0; i < n.length; i++) {  
  25.        if (max == n[i]) {  
  26.            // 如果出现的次数等于最大次数,就输出对应数组obj中的元素  
  27.            System.out.println("最多的数是"+obj[i]);  
  28.        }  
  29.     }  
  30. }  
  31. }  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值