Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 更优化的TreeMap::ComputeFabSent方法_Java_Treemap - Fatal编程技术网

Java 更优化的TreeMap::ComputeFabSent方法

Java 更优化的TreeMap::ComputeFabSent方法,java,treemap,Java,Treemap,我正在使用树映射来存储从long到long树集的映射。插入新元素时,我使用以下代码: treeMap.computeIfAbsent(key,k -> new TreeSet<>()).add(val); treeMap.computeIfAbsent(key,k->newtreeset()).add(val); 但是,查看此函数的源,它会获取元素,如果键不存在,则计算新值,并将计算出的值放入映射中。这意味着它会两次找到键的位置。我使用的地图非常大,性能非常关键。不幸的是,

我正在使用树映射来存储从long到long树集的映射。插入新元素时,我使用以下代码:

treeMap.computeIfAbsent(key,k -> new TreeSet<>()).add(val);
treeMap.computeIfAbsent(key,k->newtreeset()).add(val);
但是,查看此函数的源,它会获取元素,如果键不存在,则计算新值,并将计算出的值放入映射中。这意味着它会两次找到键的位置。我使用的地图非常大,性能非常关键。不幸的是,我不能扩展这个类,因为所有必需的变量都是私有的


是否有一个具有更高效的ComputeFabSent的TreeMap实现?

我建议在您尝试优化此功能之前,您应该衡量此功能的影响。使用JVisualVM中的探查器,并确定使用ComputeFabSent的函数是否占用大量时间。如果密钥类型的散列函数不是太大,我猜查找密钥的速度会非常快complicated@JFMeier经进一步检查,显然该函数对算法性能的影响最小。谢谢你的提示!如果确实需要性能,请查看库。它包含
Long2ObjectAvlTreeMap
Long2ObjectRBTreeMap
。选择最适合您的用例的。