java ITAT往届试题
求解答:编写一个Java应用程序,对用户输入的任意一组字符如{1,3,4,7,2,1,1,5,2},输出其中出现次数最多且数值最大的字符,并显示其出现次数
------解决方案--------------------package com.xyj.test;
import java.io.BufferedReader;
import 
java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
public class Test5 {
	public static void main(String[] args) {
		BufferedReader reader = null;
		try {
			reader = new BufferedReader(new InputStreamReader(System.in));
			String line = reader.readLine();
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < line.length(); i++) {
				char c = line.charAt(i);
				if (c <= '9' && c >= '0') {
					sb.append(c).append(",");
				}
			}
			if (sb != null && sb.length() > 0) {
				sb.deleteCharAt(sb.length() - 1);
			}
			String[] str = sb.toString().split(",");
			int[] in = new int[str.length];
			for (int i = 0; i < str.length; i++) {
				in[i] = Integer.parseInt(str[i]);
			}
			Set<Integer> hash = new HashSet<Integer>();
			for (int i : in) {
				hash.add(i);
			}
			int num = hash.size();
			int[] times = new int[num];
			List<Integer> list = new ArrayList<Integer>(hash);
			for (int i : in) {
				times[list.indexOf(i)]++;
			}
			Map<Integer, Integer> map = new TreeMap<Integer, Integer>(/*
					new Comparator<Integer>() {
						public int compare(Integer o1, Integer o2) {
							return o2.compareTo(o1);
						};
					}*/);
			for (int i = 0; i < num; i++) {
				map.put(list.get(i), times[i]);
			}
			List<Map.Entry<Integer, Integer>> mapList = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
			Collections.sort(mapList, new Comparator<Map.Entry<Integer, Integer>>() {
				@Override
				public int compare(Entry<Integer, Integer> o1,
						Entry<Integer, Integer> o2) {
					return o2.getValue().compareTo(o1.getValue());
				}
			});
			Set<Entry<Integer, Integer>> set = map.entrySet();
			for (Iterator<Entry<Integer, Integer>> iter = set.iterator(); iter
					.hasNext();) {
				Map.Entry<Integer, Integer> entry = (Entry<Integer, Integer>) iter
						.next();
				System.out.println("数值:"+entry.getKey() + "  出现的次数为:" + entry.getValue());
			}
		} catch (
IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
------解决方案--------------------Java code
import java.util.HashMap;
import java.util.Map;
public class Test {
    public static void main(String[] args){
        int[] array = new int[]{1,3,4,7,2,1,1,5,2};
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i=0; i<array.length; i++){
            if (map.get(array[i]) == null){
                map.put(array[i], 1);
            } else {
                map.put(array[i], map.get(array[i]) + 1);
            }
        }
        int times = 0;
        int max = 0;
        for (Map.Entry<Integer, Integer> entry: map.entrySet()){
            if (entry.getValue() > times){
                max = entry.getKey();
                times = entry.getValue();
            } else if (entry.getValue() == times && entry.getKey() > max){
                max = entry.getKey();
            }
        }
        System.out.println("max times num: " + max + " times:" + times);
    }
}