给定数组,将所有的数按照出现的次序由大到小输出,次数相同的,按照原数组的顺序输出

来源:互联网 发布:淘宝一分钱大学生 编辑:程序博客网 时间:2024/06/06 04:40
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;class sg{public int count;public int shunxu;public sg(int count){ this.count=count;}@Overridepublic String toString() {return "sg [count=" + count + ", shunxu=" + shunxu + "]";}}public class Test8 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[n];for(int i=0;i<n;i++){a[i]=sc.nextInt();}   Map<Integer,sg> map=new HashMap<>();   int shunxu=1;   for(int i=0;i<n;i++)   {   if(!map.containsKey(a[i]))   {   sg temp=new sg(1);   temp.shunxu=shunxu;   map.put(a[i],temp);   shunxu++;   }   else   {   map.get(a[i]).count++;   }   }  List<Entry<Integer,sg>> list=new ArrayList<>(map.entrySet());   Collections.sort(list, new Comparator<Map.Entry<Integer,sg>>(){@Overridepublic int compare(Entry<Integer, sg> o1, Entry<Integer, sg> o2) {              if(o1.getValue().count>o2.getValue().count)              return -1;              else if(o1.getValue().count<o2.getValue().count)              return 1;              else              return o1.getValue().shunxu-o2.getValue().shunxu;}    });   for(int i=0;i<list.size();i++)   {   Entry<Integer,sg> temp=list.get(i);   for(int j=0;j<temp.getValue().count;j++)   System.out.print(temp.getKey()+" ");   }}}

阅读全文
0 0
原创粉丝点击