如何在Java中检查Set是否包含具有某些字符串值的对象?
我有一组对象。每个对象都有字符串值。
我需要选择所有this
值等于“方向”的对象。
是否可以在不迭代集合的情况下进行?
谢谢。
回答:
一般来说,没有。您需要遍历该集合并检查每个对象,以查看该属性是否等于要搜索的值。这是一项O(n)
操作。
在一种情况下,您可以不重复进行操作。如果对象的equals
方法是根据该String
属性的相等性定义的,并且该hashCode
方法也已正确实现,则可以使用hashSet.contains
来及时找到具有正确值的对象,O(1)
而无需遍历集合。
正如我提到的,这是一个非常特定的用例,而不是一个通用的解决方案。如果字符串是某种唯一标识符,则可能会很有用,但不适用于您的特定用例。
您可能还需要考虑其他更适合您的用例的集合。例如,如果您使用的是Guava,则可以考虑使用Multimap。
以上是 如何在Java中检查Set是否包含具有某些字符串值的对象? 的全部内容, 来源链接: utcz.com/qa/425390.html