是否有任何常见的 Java 库提供了一种在有限集合中查找元素 并 确保完全匹配的方法?
例如,该方法可以null
在没有找到任何内容时返回,如果找到多个元素则抛出异常。
目前我使用自己的实现(见下文),但我宁愿不使用此类实用程序方法污染业务代码(即使提取在单独的实用程序包中)。
我也不希望多次迭代集合的开销,或者过滤集合和查看结果长度的开销。
PS我当前的解决方案(有效,但将被库方法替换):
public static <T> T getSingleMatch(Iterable<T> lookIn, com.google.common.base.Predicate<? super T> predicate) {
T foundItem = null;
for (T item : lookIn) {
if (predicate.apply(item)) {
if (foundItem != null)
throw new RuntimeException("multiple matches"); // alternatively: `return null;`
else
foundItem = item;
}
}
// alternatively: `if (foundItem == null) throw ...`
return foundItem;
}