gpt4 book ai didi

Java 或 guava 映射实现与指向单个值的多个键一起使用

转载 作者:行者123 更新时间:2023-12-03 02:25:43 24 4
gpt4 key购买 nike

我遇到的情况是,许多键都指向单个值。这种情况是由我正在实现的服务定位器模式引起的 -

  • 接口(interface)中的每个方法都表示为签名字符串
  • 单个接口(interface)的所有此类签名都用作 key
  • 该值是实现类的完整规范名称

因此,我的需要是当用户请求任何匹配的键时检索单个值。

从某种意义上说,我需要 Guava 的 MultiMap 的对立面。

我正在寻找最优化的解决方案,因为我的键非常相似,但对于特定值来说是唯一的,并且我不确定使用像 HashMap 这样的通用 Map 实现是否足够有效来处理这种情况。

例如以下所有签名

==============

_org.appops.server.core.service.mocks.MockTestService_testOperationThree_org.appops.server.core.service.mocks.MockTestService_getService_org.appops.server.core.service.mocks.MockTestService_start_org.appops.server.core.service.mocks.MockTestService_testOperationTwo_String_int_org.appops.server.core.service.mocks.MockTestService_getName_org.appops.server.core.service.mocks.MockTestService_shutdown_org.appops.server.core.service.mocks.MockTestService_testOperationOne_String

=======

指向一个类,即 org.appops.server.core.service.mocks.MockTestServiceImpl,我预计会有数百个这样的类(值)和数千个这样的类似签名(键)。

如果没有优化的方法,我总是可以使用 HashMap 来为每组键使用复制值,这是我想避免的。

理想情况下,我想使用 Guava 提供的现成实用程序。

最佳答案

HashMap实际上是您所需要的,问题是您误解了它的作用。

In case there is no optimized way I could always use a HashMap with replicated values for each group of keys which I would like to avoid.

HashMap不存储映射到该值的每个键的值的副本。 HashMap存储对 Java 对象的引用。成本始终相同。一个HashMap<Integer, BigExpensiveObject>其中每个键都映射到相同的 BigExpensiveObject占用与 HashMap<Integer, Integer> 完全相同的内存量其中每个键都映射到相同的 Integer 。整个程序中唯一的内存差异是 one BigExpensiveObject 之间的内存差异。和一个Integer .

关于Java 或 guava 映射实现与指向单个值的多个键一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com