【发布时间】:2016-10-19 13:28:42
【问题描述】:
我对 Java 类中的方法有类似的逻辑(不是真正的代码,这是为了示例目的而简化的)。
private Boolean method(Boolean booleanValue, SomeObject object) {
return booleanValue ? Arrays.asList(object.getStringsArray()).contains("string") : false;
}
一位指定自己检查 PR 的合作者发表了以下评论:
这是低效的。它正在创建一个新的数据结构,只是为了对其进行迭代并检查是否存在某个字符串。
getStringsArray() 方法返回一个String[],那么使用for 循环会比Arrays.asList() 更好吗?
哪种方式更有效?
【问题讨论】:
-
Arrays.asList只是返回一个包装器,所以这不是问题。object.getStringsArray可能是个问题,这取决于它的作用以及是否有更好的方法来检查这个字符串。 -
可怕的方法。第一个论点完全是假的。
-
我不同意它效率低下。
List对象由数组支持,因此没有性能损失。连the canonical answer for how to do this都用这个方法。 -
我们无法确定您的真实代码是好是坏,因为它可能看起来与此大不相同。在这里使用
Boolean而不是boolean是个坏主意,而且Object没有getStringsArray方法。 -
这不是真正的代码,更像是伪代码,真正的方法看起来不是这样的,我无法在此处发布原始代码。
标签: java list data-structures