Tag: sorted

在Java中按值映射自动排序

我需要在Java中有一个自动按值排序的映射 – 以便在我添加新的键值对或更新现有键值对的值时随时对其进行排序,甚至删除一些条目。 还请记住,这张地图将会非常大(数百万,甚至是数百万条目的大小)。 所以基本上我正在寻找以下function: 假设我们有一个实现上述function的“SortedByValuesMap”类,我们有以下代码: SortedByValuesMap sorted_map = new SortedByValuesMap(); sorted_map.put(“apples”, 4); sorted_map.put(“oranges”, 2); sorted_map.put(“bananas”, 1); sorted_map.put(“lemons”, 3); sorted_map.put(“bananas”, 6); for (String key : sorted_map.keySet()) { System.out.println(key + “:” + sorted_map.get(key)); } 输出应该是: bananas:6 apples:4 lemons:3 oranges:2 特别是,对我来说真正重要的是能够随时获得具有最低值的条目 – 使用如下命令: smallestItem = sorted_map.lastEntry(); 哪个应该给我’橘子’条目 编辑:我是一个Java新手所以请详细说明你的答案 – 谢谢 EDIT2:这可能会有所帮助:我正在使用它来计算大文本文件中的单词(对于那些熟悉的人:特别是n-gram)。 所以我需要建立一个地图,其中键是单词,值是这些单词的频率。 但是,由于限制(如RAM),我想只保留X最常用的单词 – 但事先你不能知道哪些是最常用的单词。 因此,我认为它可能起作用的方式(作为近似)是开始计算单词,当地图达到上限(如1 mil条目)时,将删除最不频繁的条目,以便将地图的大小保持为总是1密耳。