Most efficient way to check if an array contains a value in Java?
对于Java类中的方法,我有类似的逻辑(不是真正的代码,这只是为了简化示例)。
1 2 3
| private Boolean method (Boolean booleanValue, SomeObject object ) {
return booleanValue ? Arrays. asList(object. getStringsArray()). contains("string") : false;
} |
指派自己检查公关的合作者给出了以下评论:
0
getStringsArray()方法返回String[],那么使用for循环会比Arrays.asList()更好吗?
哪种方法更有效地实现这一目标?
- Arrays.asList只是返回一个包装器,所以这不是问题。object.getStringsArray可能是个问题,这取决于它的作用以及是否有更好的方法来检查这个字符串。
- 可怕的方法。第一个论点完全是假的。
- 我不同意它效率低下。List对象由数组支持,因此没有性能损失。即使是如何做到这一点的规范答案也使用这个方法。
- 我们不能确定您真正的代码是好是坏,因为它看起来可能与此非常不同。用Boolean代替Boolean是个坏主意,Object没有getStringsArray方法。
- 用return booleanValue && (code here);代替三元运算符
- 这不是真正的代码,更像是伪代码,真正的方法不像这样,我不能在这里发布原始代码。
- @我曾考虑过近距离投票作为对那个问题的欺骗,但OP已经有了一个可行的解决方案。我认为这个问题更多的是关于Arrays.asList()的效率,而不是一般如何搜索数组中的值。
- @阿祖雷格也许是吧,但如果有人要搜索这个问题,这个标题会有点误导人。如果顶部有一个横幅指向标准答案,那就太好了。不过没什么大不了的。我确保在我对答案的评论中看到了它。
当您的同事断言您的方法正在创建新的数据结构时,您的同事是不正确的。
如果你看看Arrays.asList()的API,它会说
0
当您只需要在数组周围包装一个List并使用它的内置方法时,没有理由编写自己的代码来迭代数组。
- 嘿,谢谢!我很担心,因为我想不出另一个解决办法。现在有了API文档,我可以证明这是最好的方法。
- 如果你还想从另一个这样的问题得到证明,请看这个流行的答案。这可能是那个问题的复制品…