LinkedMap的使用

输入一组数,输出是按每个出现的频率,比如1,3,3,4,5,9,9,9,3,3,输出为3,3,3,3,9,9,9,1,4,5如果频率一样就按原顺序输出。


package com.lyb.array;


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
public class SortArray {
  public void sortfrequency(int arr[]){
LinkedHashMap map = new LinkedHashMap();


for (int i = 0; i < arr.length; i++) {


if (map.get(arr[i]) == null)
map.put(arr[i], 1);
else
map.put(arr[i], map.get(arr[i]) + 1);
}
//上面的for循环是统计每个数字出现的频率(次数)


ArrayList> list = new ArrayList>(map.entrySet());
Collections.sort(list, new Comparator>() {
// 降序排序
public int compare(Map.Entry m1, Map.Entry m2) {
return m2.getValue().compareTo(m1.getValue());
//根据出现的次数排序
}


});
System.out.print( "[");
for (Map.Entry entry : list) {
//双重循环,第一重键值对,第二重根据值。值是多少就循环多少
for (int i = 0; i < entry.getValue(); i++) {


System.out.print(entry.getKey() + " ");


}

}
System.out.print( "]");
  }
}

你可能感兴趣的:(LinkedMap的使用)