![]() |
1
5
如果您想要速度,并且总是在寻找一个特定属性,那么最好的办法是创建另一个以该属性为关键字的“缓存”哈希映射。 对于不到一百万个条目,占用的内存将微不足道,哈希映射查找将比任何其他解决方案快得多。 或者,您可以将所有搜索属性放在一个地图中(即名称和ID)。如果您担心碰撞,请在关键点前加上唯一的前缀。类似于:
以上假设每个属性在所有人中都是唯一的。ID和username可能是这样,但问题指定firstname=mike,这不太可能是唯一的。 在这种情况下,您希望使用列表进行抽象,因此更像这样:
在这一点上,你真的进入了一个抓取袋的设计,但如果你不期望有数百万的条目,那么仍然非常有效。 |
![]() |
2
1
我能想到的最好的性能方面的方法是
以你为例
注意:我使用了
例如,要添加
然后,返回用户名为的所有人,即。
|
![]() |
3
0
从volatile映射中获取一个或几个条目
从volatile映射中获取多个条目
然而,请注意,这两种方法至少都需要时间,所以当您查找许多条目时,这只会产生更好的性能。
多次从“持久”映射中获取条目
|
![]() |
4
0
考虑每个备用键一个hashmap。 这将有“高”的安装成本, 但会导致通过备用键快速检索。
也许,可以同时填充两个hashmap。
就你而言,
你最终会得到这样的结果
也可以将所有键值放在同一个映射中,
如果将贴图定义为
|
![]() |
5
0
解决问题的最佳方法是什么? 正如你在回答和评论中所看到的,有很多方法可以解决这个问题。
地图是如何使用的(可能还有它是如何创建的)。如果映射是从带有
看待这个问题的另一种方法是考虑用户名也应该是唯一的(即,任何两个人都不应该共享同一个用户名)。因此,将地图创建为
使用后者:
这将是在包含Person对象作为其值的地图中检索要查找的对象的最快方法。 |
![]() |
6
0
您只需使用以下命令将Hashmap转换为List: List List=新建ArrayList(map.values()); 现在,您可以轻松地遍历列表对象。通过这种方式,您可以在Person类的任何属性上搜索Hashmap值,而不仅仅限于firstname。 唯一的缺点是最终会创建一个列表对象。但使用流api可以进一步改进代码,将Hashmap转换为列表并在单个操作中迭代,从而节省空间并提高并行流的性能。 |
![]() |
7
0
通过设计和使用适当的比较器类,可以完成值对象的排序和查找。 比较器等级: 针对特定属性设计比较器可以如下所示:
用法: 上述设计的比较器可按如下方式使用:
|
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 3 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 3 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |