在java(使用外部库或不使用外部库)中,我需要获取大约500,000个值的列表,并找到最常出现的(模式)1000.尽我所能将复杂性降至最低.
我到目前为止尝试过,做一个哈希,但我不能,因为它必须向后键= count value = string,否则当获得前1000名时,我的复杂性将是垃圾.并且向后的方式并没有真正起作用,因为我会有一个非常复杂的插入,因为我搜索我的字符串能够删除它并将其插入更高的位置...
我已经尝试过使用二进制搜索树,但是在计数或字符串上存在与数据排序相同的问题.如果它在字符串上,那么获得前1000的计数是不好的,反之亦然插入是坏的.
我可以先对列表进行排序(按字符串),然后遍历列表并保持计数直到它更改字符串.但是我应该使用什么数据结构来跟踪前1000名呢?
谢谢