gpt4 book ai didi

java - 如何在Java中使用EnumMap进行快速查找?

转载 作者:行者123 更新时间:2023-11-30 04:30:52 25 4
gpt4 key购买 nike

当给定字符串形式的例程名称时,我有大约 30 个处理程序例程要调度。因此,在工厂方法中,调度例程的一种自然方法是使用一系列 if...else 来比较例程名称以适合插槽。它确实有效,但毫无疑问,随着例程数量的增加,它会变得笨拙且低效。

我想出了一种使用枚举和 EnumMap 的方式:每当我添加一个例程时,我都会添加一个枚举实例,并将其注册到 EnumMap 中(例程名称和例程类作为键和值)。

据我所知,当实例数量小于64(long类型长度)时,EnumMap实现使用long作为位array 并使用位偏移量来执行 putget,因此速度非常快,并且当我调度例程时可以获得 O(1) 性能只要例程数量小于64即可(很适合我的情况)。

但是EnumMap的一个限制是它的key type只能是Enum,而不是String >,我无法使用例程名称(string)进行快速查找......

有什么办法可以解决这个问题吗?或者如果我可以使用键的值进行反向查找:)

最佳答案

我会保持简单,只使用 HashMap<String, Handler>直到你能证明这是一个严重的瓶颈。我在这里假设您的所有处理程序都扩展了一个通用的父类(super class)或接口(interface),因此您可以这样做

handlers.get(name).handle(...);

如果您从字符串键开始,EnumMap 不会更快,因为您首先必须使用 valueOf获取字符串对应的枚举值,this is itself implemented as a lookup in a HashMap ...

关于java - 如何在Java中使用EnumMap进行快速查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682904/

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