You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:42:56