TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
就是写一个程序判断一个数组中出现次数最多的那个元素。
方法一:- import java.util.*;
- public class Test1{
- public static void main(String args[]){
- String[] s = {"a","b","a","a","b","c"};
- HashMap< String, Integer> hm = new HashMap< String, Integer>();
-
- for (int i = 0; i < s.length; i++) {
- if (!hm.containsKey(s[i])) {
- hm.put(s[i], 1);
- } else {
- hm.put(s[i], hm.get(s[i]).intValue()+1);
- }
- }
-
- System.out.println(hm);
- }
- }
复制代码 运行结果:
{a=3, c=1, b=2}
方法二:
import java.util.*;
public class FindMostEle {
private static LinkedHashMap<String, Integer> map;
public static LinkedHashMap<String, Integer> mostEle(String[] strArray){
map = new LinkedHashMap<String, Integer>();
String str = "";
int count = 0;
int result = 0;
for(int i=0; i<strArray.length; i++)
str += strArray;
for(int i=0; i<strArray.length; i++){
String temp = str.replaceAll(strArray, "");
count = (str.length() - temp.length())/strArray.length();
if (count > result){
map.clear();
map.put(strArray, count);
result = count;
}
else if(null == map.get(strArray) && count == result)
map.put(strArray, count);
}
return map;
}
public static void main(String args[]){
String[] strArray = {"11", "11", "2", "2", "4", "5", "4"};
LinkedHashMap<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) +"次。");
}
}
结果是:
一共有3元素最多。它们分别是[11, 2, 4],分别出现了2次。
方法三:
- import java.util.*;
- public class test {
- public static void main(String[] args) {
- int[] array = {1,2,2,3,4,4,5,6,7,7,8,9};
- int iMaxCount=0;
- //因为可能有多个元素的出现次数同时位居第一,
- //所以结果应该是一个集合。用一个List来装载。
- List< Integer> list=new ArrayList< Integer>();
- for (int i=0;i< array.length;i++){
- int iCount=0;
- for (int j=0;j< array.length;j++){
- if (array[i]==array[j])
- iCount++;
- }
- if (iCount>iMaxCount){
- list.clear();
- list.add(array[i]);
- iMaxCount=iCount;
- }else if (iCount==iMaxCount){
- if (list.indexOf(array[i])==-1)
- list.add(array[i]);
- }
- }
- System.out.println("出现次数最多的元素为"+list.toString());
- }
- }
复制代码 运行结果:
出现次数最多的元素为[2, 4, 7]
源码下载:http://file.javaxxz.com/2014/11/13/000612390.zip |
|