Java标准库或知名库中是否存在判断集合元素全唯一的工具方法?
判断集合元素是否全唯一的Java库方法
首先明确说:Java标准库中并没有内置Collections#areAllUnique(Collection)这类直接判断集合元素全唯一的方法。
你提到的collection.size() == new HashSet<>(collection).size()确实是大家常用的一行式写法,但正如你指出的,它的效率不算最优——必须把整个集合完整转换为HashSet才能完成判断,没法在检测到第一个重复元素时就提前终止。
至于你问的知名第三方库:
- Guava:Guava的集合工具类里并没有直接提供这个方法。虽然可以用它的迭代器工具类配合HashSet实现高效判断,但本质上还是需要自己写逻辑,没有现成的一行式调用。
- Apache Commons Collections:同样,
CollectionUtils等工具类中也没有封装好的此类方法。
不过你自己写的实现已经是非常高效的方案了:先判断集合本身是否是Set(因为Set天然保证元素唯一,直接返回true),遍历过程中一旦发现重复元素就立即返回false,避免了构建完整的HashSet。如果想用Java 8+的Stream写一行式,也可以这么写:
public static <T> boolean areAllUnique(Collection<T> collection) { return collection instanceof Set || collection.stream().distinct().count() == collection.size(); }
但要注意,这个Stream实现还是需要遍历完所有元素(哪怕中途有重复),效率不如你写的循环版本。
总结一下:如果只是图省事,标准库的size()对比写法足够用;如果追求最优性能,还是建议自己封装类似你提供的工具方法——毕竟很多项目都会把这类通用逻辑放到自己的工具类里,Guava等库没提供也正是因为它属于“简单但场景特定”的需求。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

