在java.util
,我们可以用containsAll
方法来比较两者java.util.Set
。比较两者的最佳方法是什么fj.data.Set
?
fj
使用over真的有什么“有价值的”好处java.util
吗?
在java.util
,我们可以用containsAll
方法来比较两者java.util.Set
。比较两者的最佳方法是什么fj.data.Set
?
fj
使用over真的有什么“有价值的”好处java.util
吗?
我从来没有使用过那个库,也永远不会,但是通过 API 我找到了方法
public final boolean subsetOf(Set<A> s)
如果此集合是给定集合的子集,则返回 true。
参数:
s
- 如果此方法返回 true,则该集合是此集合的超集。返回:
true
如果此集合是给定集合的子集。
我相信这应该像“反转”一样使用containsAll
:
a.containsAll(b)
是true
iffb.subsetOf(a)
是true
(不确定如何处理相等的集合,我猜这很好)。
事后思考:我刚刚注意到 javadoc 中的措辞有多么可疑。参数描述取决于输出:如果此方法返回 true ,则为该集合的超集。您不应该假设参数或使用条件。更好的措辞是:a set to be checked for be a superset。
要比较两个集合,请使用 Set.subsetOf。所以 s1.subsetOf(s2) 如果 s1 是 s2 的子集(在包含项中,s2 包含 s1)。
要创建集合,请使用 Set.set 对元素进行排序(即如何知道一个项目是否小于另一个项目,以便可以将集合存储在红黑树中)。
FunctionalJava 使用函数式编程 (FP) 方法——数据是不可变的。这使得 Collection 接口不适合实现。注意 Collection 接口中对象的所有变化和更新,如 add、addAll、remove 等方法。
应该更好地支持与 java.util.Set 之间的转换,但要将 fj.data.Set 转换为 java.util 类,请调用 set.toStream().toCollection() 或 set.toList().toJavaList ()。