一个一维整形数组,若干个数字,统计数组中不同的数字出现的次数,并按照出现频率从小到大排序输出,相同频率按数字大小排序输出

第一次写好激动!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

有更好的方法请留下您宝贵的意见,谢谢啦

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class cs {
	public static void main(String args[]){
		Scanner in=new Scanner(System.in);
		int length=in.nextInt();
		int[] array = new int[length];
		for(int i=0;i<array.length;i++){
			array[i]=in.nextInt();
		}
		Arrays.sort(array);
		Map<Integer,Integer> map=new HashMap<Integer,Integer>();
		for(int i:array){
			Integer a=map.get(i);
			if(a==null){
				map.put(i, 1);	
			}
			else map.put(i,a+1);
		}
		sortByValue(map);
		Iterator<Entry<Integer, Integer>> it=map.entrySet().iterator();
		while(it.hasNext()){
			Entry<Integer, Integer> entry=it.next();
			System.out.println(entry.getKey()+"出现"+entry.getValue()+"次");
		}
	}
	public static void sortByValue(Map map){
		List<Map.Entry<Integer, Integer>> infoIds=new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
		Collections.sort(infoIds,new Comparator<Map.Entry<Integer, Integer>>(){
			public int compare(Map.Entry<Integer, Integer> o1,Map.Entry<Integer, Integer> o2){
				return (o1.getValue()-o2.getValue());
			}
		});
	}
}



猜你喜欢

转载自blog.csdn.net/u011207553/article/details/49387675