Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java有限地图_Java_Dictionary_Optimization_Data Structures_Collections - Fatal编程技术网

Java有限地图

Java有限地图,java,dictionary,optimization,data-structures,collections,Java,Dictionary,Optimization,Data Structures,Collections,我正在寻找某种具有固定大小的映射,例如20个条目,但不仅如此,我只想保留最低值,假设我正在评估某种函数并在映射中插入结果,我需要映射,因为我必须保留键值,但我只想有20个最低结果。我在考虑排序,然后删除最后一个元素,但我需要对数以百万计的记录进行排序,所以每次我添加值时进行排序是没有效率的,也许有更好的方法? 谢谢您的帮助。java中没有内置的数据结构。你可以试着在番石榴图书馆找一个。否则,请考虑为此使用LinkedHashMap或树形图。您可以将其包装在自己的类中以处理限制 如果您关心效率,请

我正在寻找某种具有固定大小的映射,例如20个条目,但不仅如此,我只想保留最低值,假设我正在评估某种函数并在映射中插入结果,我需要映射,因为我必须保留键值,但我只想有20个最低结果。我在考虑排序,然后删除最后一个元素,但我需要对数以百万计的记录进行排序,所以每次我添加值时进行排序是没有效率的,也许有更好的方法?
谢谢您的帮助。

java中没有内置的数据结构。你可以试着在番石榴图书馆找一个。否则,请考虑为此使用LinkedHashMap或树形图。您可以将其包装在自己的类中以处理限制


如果您关心效率,请注意TreeMap实际上在内部是一棵红黑树,因此put具有logn的时间复杂度。

是什么,20或几百万条记录?请继续。我只需存储百万分之二十的值。对我来说,对地图进行1000万次的排序是没有效率的……你只需要将你的新值与前20个值进行比较。例如,你扫描了1M条记录,并保留了前20条记录。你只需将下一个百万记录与前20名进行比较,这将导致空间复杂性。在第一个1M之后不需要排序。如果您想进一步优化,您可以将地图中最大的项目存储在一个特殊变量中,并且仅当它较低时才遍历地图。如果数据或多或少是随机的,它将为您节省大量的比较,以获得真正低的成本。我不是指堆,我考虑的是具有最大元素的BST,指出需要O1才能找到它,而不是Olog n。但我认为,在这种情况下,heap也起作用。