我不理解Guava的集合的行为#isremp()方法的区别:
public staticSetView difference(final Set set1, final Set> set2) { checkNotNull(set1, "set1"); checkNotNull(set2, "set2"); final Predicate
更确切地说,我不明白如何set2.containsAll(set1);
使用它的结果isEmpty()
.
举个例子:
set1 = A,B
set2 = A,B,C,D,E
差异(C,D,E)肯定不会是空的.但Sets.difference(set1,set2).isEmpty()将返回true,因为(A,B,C,D,E).containsAll(A,B)为真.
即使javadoc说,我也不明白逻辑:
{@code set2}也可能包含{@code set1}中不存在的元素; 这些都被忽略了
我错了吗?我要填一个问题吗?
(我正在使用guava-18.0)
从guava文档"public static Sets.SetView difference(Set set1,Set set2)":
返回的集合包含set1包含但未包含在set2中的所有元素
如您所见,您的set1都不符合这些条件,因此差异集为空.
请注意,差异方法对于参数不是可交换的,并且差异集不是您在调用时所考虑的(C,D,E) difference(set1, set2);