Сначала создайте HashMap, поместив элемент массива в качестве ключа и их частоту в качестве значений.
Сортируйте их, используя Comparator, основываясь на ключах и значениях.
import java.io.*;
import java.util.*;
import java.lang.*;
public class Sum_of
{
public static HashMap<Integer, Integer> sortHashMapByValues(
HashMap<Integer, Integer> passedMap) {
List<Integer> mapKeys = new ArrayList<>(passedMap.keySet());
List<Integer> mapValues = new ArrayList<>(passedMap.values());
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap<Integer, Integer> sortedMap =
new LinkedHashMap<>();
Iterator<Integer> valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
Integer val = valueIt.next();
Iterator<Integer> keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Integer key = keyIt.next();
Integer comp1 = passedMap.get(key);
Integer comp2 = val;
if (comp1.equals(comp2)) {
keyIt.remove();
sortedMap.put(key, val);
break;
}
}
}
return sortedMap;
}
public static void main(String args[])
{
HashMap<Integer,Integer> hs = new HashMap<Integer,Integer>();
int a[]={3,4,3,2,3,5,4,2,2,1,2};
int n= a.length;
int c=0;
for(int i=0;i<n;i++)
{
if(hs.containsKey(a[i]))
{
c=hs.get(a[i]);
hs.put(a[i],c+1);
}
else
hs.put(a[i],1);
}
hs=Sum_of.sortHashMapByValues(hs);
System.out.println(hs.keySet());
}
}