package TwentyTwo;
import java.util.*;
import java.lang.*;
public class Exercise22_6 {
public static void main(String[] args){
//create two tree map ,map1 is used to store numbers inputed
//map2 is used to sort with elements
TreeMap<Integer,Integer> map1 = new TreeMap<Integer,Integer>();
LinkedHashMap<Integer,Integer> map2 = new LinkedHashMap<Integer,Integer>();
//create a set to store the frequency exists Integer
Set<Integer> set = new HashSet<Integer>();
Scanner input = new Scanner(System.in);
int number =input.nextInt();
int most =0;
while(number != 0)
{
if(map1.get(number) == null)
{
map1.put(number,1);
}
else
{
int value =map1.get(number).intValue();
value++;
map1.put(number, value);
}
number = input.nextInt();
}
map2 = sortedByValueDescending(map1);
List<Map.Entry<Integer,Integer>> list =new LinkedList<Map.Entry<Integer, Integer>>(map2.entrySet());
System.out.println("list" + list);
for(Map.Entry<Integer, Integer> element: map2.entrySet()) {
if(list.get(0).getValue()> element.getValue())
{
set.add(list.get(0).getKey());
}
else
if(list.get(0).getValue() == element.getValue())
{
set.add(element.getKey());
}
}
System.out.println("the most frequency exist is : " + set);
}
public static <E, T extends Comparable<? super T>> LinkedHashMap<E, T> sortedByValueDescending(Map<E, T> map){
List<Map.Entry<E, T>> list = new LinkedList<Map.Entry<E, T>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<E, T>>()
{
public int compare(Map.Entry<E, T> o1, Map.Entry<E,T> o2){
int compare = ((o1.getValue()).compareTo(o2.getValue()));
return -compare;
}
});
LinkedHashMap<E,T> result = new LinkedHashMap<E, T>();
for (Map.Entry<E,T> entry :list)
{
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}