将所有 .equals(string) 替换为 == (int)



我的java项目使用具有字符串ArrayList的对象。但是,这些字符串是预先确定的。只有 47 个左右可能的字符串。现在我想检查ArrayList是否包含某种String

我目前通过.equals()执行此操作,但我相信这很慢,所以我想切换到==(int(。但是,手动将所有.equals()转换为==(int(非常烦人。尤其是当事情必须再次改变时。

那么有没有一个工具可以将所有这些.equals()转换为一组字符串的==(int(呢?

当心过早优化(这是万恶之源(。有很多资源详细描述了这一点。简而言之,衡量您所做的任何优化对性能的影响并将其与代码可读性进行权衡非常重要。在这种情况下,我想您正在降低可读性,对性能的影响可以忽略不计。

还值得注意的是,准确的测量性能本身就是一个完整的主题。如果差异很小,则很难获得有意义的结果,因为除了实际代码之外,还有大约一百万个因素会影响性能 - 尤其是Java,它的热点编译器。

如果不看到代码,就很难理解您的确切应用程序。但是,通过在 EnumSet 中使用枚举,您可以在不降低(或可能提高?(可读性的情况下提高性能。同样,如果提高性能是您的主要目标,那么衡量您的更改是否真的改善了任何内容非常重要。

您还可以使用 [List#contains](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html#contains(java.lang.Object( 简化现有的 String#equals 代码

如果它们都是预先确定的,你可以只使用枚举吗?枚举基本上是一个带有一些额外帮助函数的命名数字列表。

public enum myStrings
{
firstString,
secondString,
lastString
}

最新更新