Java 如何在ArrayList中按前3位对邮政编码列表进行排序?

Java 如何在ArrayList中按前3位对邮政编码列表进行排序?,java,sorting,arraylist,Java,Sorting,Arraylist,目前,我有一个表示车祸的邮政编码列表 例: 在本例中,我想计算每个邮政编码中出现次数最多的邮政编码,并从最高到最低排序。我环顾四周,很多人都在谈论使用HashMap来实现这一点。不幸的是,我不能按照作业上的说明使用HashMap 计算每个邮政编码发生频率的最佳方法是什么,从而在不使用HashMap/哈希表的情况下有效地计算每个邮政编码的事故数 我曾经考虑过做arrayOfZip[zipCode]=frequency,然后在那里进行排序,但问题是,声明的数组在内存中会过大 您可以对列表进行排序,然

目前,我有一个表示车祸的邮政编码列表

例:

在本例中,我想计算每个邮政编码中出现次数最多的邮政编码,并从最高到最低排序。我环顾四周,很多人都在谈论使用HashMap来实现这一点。不幸的是,我不能按照作业上的说明使用
HashMap

计算每个邮政编码发生频率的最佳方法是什么,从而在不使用
HashMap
/
哈希表的情况下有效地计算每个邮政编码的事故数


我曾经考虑过做
arrayOfZip[zipCode]=frequency
,然后在那里进行排序,但问题是,声明的数组在内存中会过大

您可以对列表进行排序,然后迭代计算每个邮政编码的运行时间;然后只需记录3次最长运行的长度及其对应的邮政编码。

您可以对列表进行排序,然后迭代计算每个邮政编码的运行时间;然后只需记录3次最长跑步的长度及其对应的邮政编码。

我认为基于动作频率的方法很有用:

int引用=Collections.frequency(zip,“xxxxxx”)


我认为基于收集频率的方法很有用:

int引用=Collections.frequency(zip,“xxxxxx”)


对列表进行排序,然后:

int counter;
for(int i=0;i<SizeOfList;i+=counter)
//increment counter by no. of times a zipcode occurred to avoid repetation
    {
        counter=1;
        for(j=i+1;j<SizeOfList;++j)
            { 
                if(zipcode[i]==zipcode[j])//checking one zipcode with all next values in list
                    counter++;
            }
        System.out.print("\nFrequency of " + zipcode[i] + " is " + counter);
//getting the frequency of that zipcode and printing it(can store it if you want) 
//Next it will jump the loop by value of counter and hence
//the next zipcode inline will come into loop and it will continue till end
    }
int计数器;

对于(int i=0;i对列表排序,然后:

int counter;
for(int i=0;i<SizeOfList;i+=counter)
//increment counter by no. of times a zipcode occurred to avoid repetation
    {
        counter=1;
        for(j=i+1;j<SizeOfList;++j)
            { 
                if(zipcode[i]==zipcode[j])//checking one zipcode with all next values in list
                    counter++;
            }
        System.out.print("\nFrequency of " + zipcode[i] + " is " + counter);
//getting the frequency of that zipcode and printing it(can store it if you want) 
//Next it will jump the loop by value of counter and hence
//the next zipcode inline will come into loop and it will continue till end
    }
int计数器;

对于(int i=0;iSo),只要你的问题提出得很好(我相信是这样),你不需要指出这是一个家庭作业。不过,知道你的约束是什么很好。你的zipcodes是否封装在某个中间对象中?是的。我有一个碰撞对象,它跟踪邮政编码、骑车人受伤等情况。我还有一个collisionList类,它是碰撞的Arraylist我从提供的CSV文件中解析的。您可以使用
Collections.frequency()
获取
列表中每个对象的频率。只要您的问题得到了很好的表达(我相信是这样),你不需要指出这是一个家庭作业。不过,知道你的约束是什么很好。你的zipcodes是否封装在某个中间对象中?是的。我有一个碰撞对象,它跟踪邮政编码、骑车人受伤等情况。我还有一个collisionList类,它是碰撞的Arraylist我从提供的CSV文件中解析的。您可以使用
Collections.frequency()
获取
列表中每个对象的频率。这很好。但是,如果存在平局,我还必须包括平局值。跟踪这一情况的最佳方法是什么?不断迭代超过第三高,并比较数字是否与以前相同?此外,这难道不是纯粹的邮政编码排序吗而不是频率?您正在对邮政编码字符串进行排序,但一旦排序,相等的元素彼此相邻,因此它们很容易计数。不幸的是,我知道这是一个家庭作业问题,所以我不想给您太多提示!这很好。但是,如果存在平局,我还必须包括平局值。什么跟踪这一点的最佳方法是什么?不断迭代到第三高,然后比较数字是否与以前相同?此外,这不是纯粹通过邮政编码而不是频率进行排序吗?您正在对邮政编码字符串进行排序,但一旦排序,相等的元素彼此相邻,因此它们很容易计数。不幸的是当然对你来说,我知道这是一个家庭作业问题,所以我不想给你太多提示!