最近我需要在集合中只有一个元素的情况下执行“特殊情况”场景。检查...size() == 1
并使用...iterator.next()
进行检索看起来很丑,因此我在自制的 Collections 类中创建了两种方法:
public class Collections {
public static <T> boolean isSingleValue(Collection<T> values) {
return values.size() == 1;
}
public static <T> T singleValue(Collection<T> values) {
Assert.isTrue(isSingleValue(values));
return values.iterator().next();
}
}
几天前,我发现Guava有一个叫做Iterables.getOnlyElement的方法。它满足了我的需求,替代了
singleValue
,但我找不到匹配isSingleValue
的方法。这是设计上的吗?值得提出功能请求来添加Iterables.isOnlyElement
方法吗?
编辑:
由于有一些赞同,我决定在Guava上开启增强功能 - issue 957。最终解决方案是“不修复”。论据与Thomas/Xaerxess提供的非常相似。