import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class NthRareElemnt {
public static void main(
String args[]){
int arr[]={2,2,3,1,1,4,4,4,3,5};
ArrayList<Integer> lis = new ArrayList<Integer>();
for(int i :arr){
lis.add(i);
}
Set<Integer> se = new HashSet<Integer>(lis);
Map<Integer,Integer> m = new HashMap<Integer,Integer>();
for(int temp:se){
m.put(temp,Collections.frequency(lis,temp));
}
Set<Entry<Integer,Integer>> set = m.entrySet();
ArrayList<Entry<Integer,Integer>> al = new ArrayList<Entry<Integer,Integer>>(set);
Comparator<Entry<Integer,Integer>> c = new Comparator<Entry<Integer,Integer>>(){
public int compare(Entry<Integer, Integer> o1,Entry<Integer, Integer> o2) {
// TODO Auto-generated method stub
Integer i1 = o1.getValue();
Integer i2 = o2.getValue();
return i1.compareTo(i2);
}
};
Collections.sort(al, c);
for(Entry<Integer,Integer> e: al){
System.out.println(e.getKey()+ "----"+e.getValue());
}
}
}
output :
5----1
2----2
1----2
3----2
4----3
(element -> frequency in sorted order
)
I try to do the program like this .But i'm stuck after this . Could someone please help me to proceed further ?