fj.data。比较

时间:2016-01-28 14:06:04

标签: java functional-java

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

使用fj而不是java.util确实有任何“宝贵”的好处吗?

2 个答案:

答案 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()。