1

java.util,我们可以用containsAll方法来比较两者java.util.Set。比较两者的最佳方法是什么fj.data.Set

fj使用over真的有什么“有价值的”好处java.util吗?

4

2 回答 2

1

我从来没有使用过那个库,也永远不会,但是通过 API 我找到了方法

public final boolean subsetOf(Set<A> s)

如果此集合是给定集合的子集,则返回 true。

参数: s - 如果此方法返回 true,则该集合是此集合的超集。

返回: true如果此集合是给定集合的子集。

我相信这应该像“反转”一样使用containsAll

a.containsAll(b)trueiffb.subsetOf(a)true(不确定如何处理相等的集合,我猜这很好)。

事后思考:我刚刚注意到 javadoc 中的措辞有多么可疑。参数描述取决于输出:如果此方法返回 true ,则为该集合的超集。您不应该假设参数或使用条件。更好的措辞是:a set to be checked for be a superset

于 2016-01-28T16:19:09.173 回答
0

要比较两个集合,请使用 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 ()。

于 2016-02-01T05:35:34.240 回答