在java.util
中,我们可以使用containsAll
方法比较两个java.util.Set
。比较两个fj.data.Set
的最佳方法是什么?
使用fj
而不是java.util
确实有任何“宝贵”的好处吗?
答案 0 :(得分:1)
我从未使用过该库,也不会使用该库,但通过API我找到了方法
public final boolean subsetOf(Set<A> s)
如果此集合是给定集合的子集,则返回true。
参数:
s
- 如果此方法返回true,则为此set的超集的集合。如果此集合是给定集合的子集,则返回
true
。
我认为这应该被用作&#34;反转&#34; containsAll
:
a.containsAll(b)
是true
i.f.f. b.subsetOf(a)
是true
(不确定如何处理相同的集合,我的猜测是它很好)。
后来的想法:我刚才注意到javadoc中的措辞是多么可疑。参数说明取决于输出:此方法的超集(如果此方法返回true )。你不应该假设参数或使用条件。更好的措辞将是:要检查作为超集的集合。
答案 1 :(得分:0)
要比较两组使用Set.subsetOf。所以s1.subsetOf(s2)如果s1是s2的子集(在包含术语中,s2包含s1)。
要创建集合,请使用Set.set,它接受元素的排序(即,如何知道某个项目是否小于另一个项目,以便该集合可以存储在红黑树中)。
FunctionalJava使用函数式编程(FP)方法 - 数据是不可变的。这使得Collection接口不适合实现。注意在add,addAll,remove等方法中Collection对接口中对象的所有变异和更新。
对java.util.Set的转换应该有更好的支持,但是要将fj.data.Set转换为java.util类,请调用set.toStream()。toCollection()或set.toList( ).toJavaList()。