如何比较数组列表与现代Java的相等性?

如何比较数组列表与现代Java的相等性?,第1张

如何比较数组列表与现代Java的相等性?

1) 基于Java 8流的解决方案

List<List<String>> first = list1.stream().map(Arrays::asList).collect(toList());List<List<String>> second = list2.stream().map(Arrays::asList).collect(toList());return first.equals(second);

2) 更简单的解决方案(适用于Java 5+):

return Arrays.deepEquals(list1.toArray(), list2.toArray());

3) 关于您的新要求(首先检查包含的String数组的长度),您可以编写一个通用的辅助方法,对转换后的列表进行相等性检查:

<T, U> boolean equal(List<T> list1, List<T> list2, Function<T, U> mapper) {    List<U> first = list1.stream().map(mapper).collect(toList());    List<U> second = list2.stream().map(mapper).collect(toList());    return first.equals(second);}

那么解决方案可能是:

return equal(list1, list2, s -> s.length)    && equal(list1, list2, Arrays::asList);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5100651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存