【问题标题】:How to use Guava to check if every element in a collection are equal to each other如何使用 Guava 检查集合中的每个元素是否彼此相等
【发布时间】:2015-04-05 10:17:54
【问题描述】:

有没有一种简单的方法可以使用Guava 来检查我的Collection 是否包含相同的元素?

【问题讨论】:

标签: java collections


【解决方案1】:

我认为你不需要 Guava。您可以简单地将Collection 中的所有对象传递到Set 中,如果您得到大小为1 的Set,则Collection 中的所有对象都将被视为相等(因为,如根据定义,Set 不能包含重复项)。例如:

public boolean checkCollectionForEqualObjects(Collection<SomeObject> collection) {
    Set<SomeObject> set = new HashSet<>();
    for (SomeObject object : collection) {
       set.add(object);
    }
    return set.size() == 1;
}

更好的是,正如@blgt 建议的那样,HashSet 类 has a constructor 带有 Collection 参数,所以你可以这样做:

public boolean checkCollectionForEqualObjects(Collection<SomeObject> collection) {
    return new HashSet<>(collection).size() == 1;
}

【讨论】:

  • HashSet 有一个构造函数可以将Collection 作为参数,所以你不需要自己做迭代
  • 谢谢,@blgt。我会将其添加到答案中。
猜你喜欢
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2021-06-25
  • 2018-08-31
相关资源
最近更新 更多