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);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)