只有五十分,不知道错在哪里,待完善!
import java.util.*;
import java.util.Map.Entry;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(in.nextInt());
}
List<Integer> ii = new ArrayList<>();
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
int count = 1;
if (ii.contains(list.get(i))) {
continue;
} else {
ii.add(list.get(i));
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i) == list.get(j)) {
count++;
}
}
map.put(list.get(i), count);
}
}
List<Map.Entry<Integer, Integer>> ll = new ArrayList<>(map.entrySet());
Collections.sort(ll, new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
if (o2.getValue().compareTo(o1.getValue()) > 0) {// 后面的小于前面的返回正数
return 1;
} else {
if (o2.getValue().compareTo(o1.getValue()) == 0) {
if (o2.getKey().compareTo(o1.getKey()) < 0)
return 1;
else
return -1;
} else {
return -1;
}
}
}
});
for (Map.Entry<Integer, Integer> v : ll) {
System.out.print(v.getKey() + " " + v.getValue() + "\n");
}
}
}