我想比较两个无序列表,目前我正在通过以下方式进行比较。有没有更好的方法来执行此操作,因为我重复我的代码两次(对于空检查&然后转换为Set)。也许Guava中有一个库可以做到这一点吗?
public class CompareUnorderedList implements BiPredicate<Object, Object> {
private Function<Object, Object> mapping;
public CompareUnorderedList(Function<Object, Object> mapping) {
this.mapping = mapping;
}
@Override
public boolean test(Object o1, Object o2) {
o1 = o1 != null ? o1 : Collections.EMPTY_LIST;
o2 = o2 != null ? o2 : Collections.EMPTY_LIST;
Set<Object> firstSet = (List<Object>o1).stream().map(mapping).collect(Collectors.toSet());
Set<Object> secondSet = (List<Object>o2).stream().map(mapping).collect(Collectors.toSet());
return firstSet.equals(secondSet);
}
}