当前位置: 首页 > 面试题库 >

Java性能:地图与列表

梁才
2023-03-14
问题内容

我在JSF1.2和Richfaces 3.3.2中构建了一个树分页,因为我有很多树节点(大约80k),而且速度很慢。

因此,作为首次尝试,我将创建一个带有页面和页面节点列表的HashMap。

但是,性能还不够好…

所以我想知道是否是比HashMap更快的东西,也许是列表列表之类的东西。

有人对此有经验吗?我能做什么?

提前致谢。

编辑。

最大的问题是,我必须在树的子节点中验证用户的权限。我知道这是个大问题:此验证很慢,因为我必须进入节点内部,所以我没有很好的方法来知道用户是否在第10级节点中具有权限而不进行所有操作的迭代。除此之外,相同的三个已经在更多的地方使用了…之所以我进行此分页,是因为客户端会变得很慢,这是因为Richfaces,很多tr和td所生成的结构,浏览器对此感到疯狂。因此,不幸的是,我必须加载所有节点,并且仅对客户端进行分页,并且我需要知道其中哪些迭代速度更快…

对不起,我的英语不好。


问题答案:

如果要获取页面的所有节点,则哈希映射是最快的数据结构。可以在恒定时间(O(1))中获取节点列表,而使用列表的时间为O(n)(n
=页面数,在已排序列表上更快,但永远不会接近O(1))

__对数据结构执行 哪些 操作 太慢 。这就是开始优化之前必须分析的内容。



 类似资料:
  • 问题内容: 我没有用Java理解Maps。建议何时使用地图而不是列表? 提前致谢, 无人 问题答案: Java映射:将键映射到值的对象。映射不能包含重复的键;每个键最多可以映射到一个值。 Java列表:有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 不同之处在于它们是不同的。映射是键/值的映射,是项列表

  • 问题内容: 我有一个保证是不同的对象的集合(尤其是由唯一的整数ID索引)。我也确切地知道它们中有多少(并且数目不会改变),并且想知道Array是否比HashSet在存储/检索所述元素方面具有显着的性能优势。 在纸上,Array保证了恒定的时间插入(因为我提前知道了大小)和检索,但是HashSet的代码看起来更简洁并且增加了灵活性,所以我想知道是否会因为使用它而失去任何性能方面的信息,至少在理论上是

  • 问题内容: 考虑这个基准,我们在这里比较地图访问与切换 结果如下: 因此,使用地图似乎比切换要慢。 我目前正在尝试使用类似于的代码来优化功能,其中地图访问是瓶颈,但是由于程序启动时会动态生成地图,因此我无法使用switch(即,它可能会根据输入参数而变化) 有没有办法获得与动态生成的地图类似的性能? 问题答案: 映射不适用,因为索引索引是在运行时评估的,并且从映射中获取元素所涉及的操作比仅进行一次

  • 问题内容: 最近开始使用一个数据库,其中的约定是为每个表创建一个视图。如果您假设表和视图之间存在一对一的映射,那么我想知道是否有人可以告诉我这样做的性能影响。顺便说一句,这是在Oracle上。 问题答案: 假设问题是关于非具体化视图的,那么- 确实取决于该视图所基于的查询以及对其执行的操作。有时,谓词可以由优化器推入视图查询中。如果不是这样,那将不如表格本身好。视图建立在表格之上- 为什么您期望性

  • 问题内容: 在知道数组索引的情况下,使用Arrays或HashMaps更好(在性能方面)吗?请记住,示例中的“对象数组/映射”只是一个示例,在我的真实项目中,它是由另一个类生成的,因此我不能使用单个变量。 ArrayExample: HashMapExample: HashMap看起来好得多,但我确实需要在此方面具有性能,因此具有优先权。 编辑: 那么是数组,仍然欢迎建议 编辑: 我忘了提,Arr

  • 问题内容: 我有一个Map是一个到值列表的映射,但是我需要将其求逆,以便 变成 例如我有 我想看看 除了要遍历映射条目并创建set条目(如果不存在)并添加到列表等之外,Java 8中还有什么更简单的方法可以做到这一点?我一直认为这确实很明显,但我无法解决。 提前致谢 问题答案: 未经测试,但是您可以执行以下操作: