Java哈希表在大输入时出错

Java哈希表在大输入时出错,java,hashtable,Java,Hashtable,我正在使用哈希表为此编写代码。我的代码通过了前4个first input测试,但是当我尝试最后一个测试时,它报告了一个错误的答案 这是我的代码: import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int migratoryBirds(int n, int[] ar)

我正在使用
哈希表
为此编写代码。我的代码通过了前4个first input测试,但是当我尝试最后一个测试时,它报告了一个错误的答案

这是我的代码:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    static int migratoryBirds(int n, int[] ar) {
        Hashtable<Integer,Integer> birds = new Hashtable<Integer,Integer>();
        for (int i=0;i<n;i++) {
            if (birds.get(ar[i])==null) {
                birds.put(ar[i],1);
            } else {
                birds.put(ar[i],birds.get(ar[i])+1);
            }
        }
        Set<Integer> keys = birds.keySet();
        int maxKey = 0;
        int maxValue = 0;
        for (Integer key : keys) {
            if ((maxKey==0 && maxValue==0) || maxValue<birds.get(key)) {
                maxValue = birds.get(key);
                maxKey = key;
            }           
        }
        return maxKey;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] ar = new int[n];
        for(int ar_i = 0; ar_i < n; ar_i++){
            ar[ar_i] = in.nextInt();
        }
        int result = migratoryBirds(n, ar);
        System.out.println(result);
    }
}
import java.io.*;
导入java.util.*;
导入java.text.*;
导入java.math.*;
导入java.util.regex.*;
公共类解决方案{
静态int migratoryBirds(int n,int[]ar){
Hashtable birds=新的Hashtable();

对于(int i=0;i而言,这是因为以下要求

如果两种或两种以上的鸟类同样常见,则选择ID号最小的类型

使用
哈希表时
不能保证迭代顺序

如果计数相等,则添加一个显式的
if
check以选取较小的索引

 if ((maxKey==0 && maxValue==0) || maxValue<birds.get(key) 
    || (maxValue == birds.get(key) && maxKey > key))

上述方法之所以有效,是因为整数具有可比性(及其自然排序)

您得到了什么错误?
Map<Integer,Integer> birds = new TreeMap<Integer,Integer>();