java找出一個數組中出現次數最多的那個元素
阿新 • • 發佈:2019-01-26
方法一:
import java.util.*; public class TestMain { private static HashMap<String, Integer> map; public static HashMap<String, Integer> mostEle(String[] strArray) { map = new HashMap<String, Integer>(); String str = ""; int count = 0; int result = 0; for (int i = 0; i < strArray.length; i++) str += strArray[i]; for (int i = 0; i < strArray.length; i++) { String temp = str.replaceAll(strArray[i], ""); count = (str.length() - temp.length()) / strArray[i].length(); if (count > result) { map.clear(); map.put(strArray[i], count); result = count; } else if (count == result) map.put(strArray[i], count); } return map; } public static void main(String args[]) { String[] strArray = { "11", "11", "2", "2", "4", "5", "4" }; HashMap<String, Integer> result = mostEle(strArray); ArrayList<Integer> c = new ArrayList<Integer>(result.values()); Set<String> s = result.keySet(); System.out.print("一共有" + result.size() + "元素最多。它們分別是"); System.out.print(s); System.out.println(",分別出現了" + c.get(0) + "次。"); } }
方法二:
public class TestMain { public static void main(String[] args) { Object array[]={1,2,3,4,5,6,23,12,12};//建立陣列存放取出狀態的時間 Set<Object> s = new HashSet<Object>();// HashSet用來去掉重複 for (Object o : array) { s.add(o); } // 現在的集合s中無重複的包含array中的所有元素 Object[] obj = s.toArray();// 把集合s中的元素存入陣列obj2中 int[] n = new int[obj.length];// 這個陣列用來存放每一個元素出現的次數 int max = 0; for (int i = 0; i < obj.length; i++) { int cout = 0; for (int j = 0; j < array.length; j++) { if (obj[i].equals(array[j])) cout++; // 用obj中的元素跟array中的每一個比較,如果相同cout自增 } n[i] = cout;// 每一個元素出現的次數存入陣列n // 陣列n的下標i跟陣列obj的下標是一一對應的。 if (max < cout) {// 得到元素出現次數最多是多少次 max = cout; } } for (int i = 0; i < n.length; i++) { if (max == n[i]) { // 如果出現的次數等於最大次數,就輸出對應陣列obj中的元素 System.out.println("最多的數是"+obj[i]); } } } }