java获取两个arrayList之间的差异,但以大写字母进行比较
我有两个arrayList,我需要比较它们,得到唯一的值,并用它们构建一个新的数组,问题是有些值是相同的,但大写,所以它们不应该显示为唯一值。这是我的代码alredy,可以工作,但速度会变慢
for (i = 0; i < parsedLocal.size(); i++) {
for (j = 0; j < parsedRemote.size(); j++) {
if (parsedLocal[i].toUpperCase().equals(parsedRemote[j].toUpperCase())){
parsedLocal.remove(parsedLocal[i])
}
}
}
然后我发现这个解决方案速度更快,但不比较大小写,你知道如何用这个方法或类似的方法来实现吗
parsedLocal.removeAll(parsedRemote);
# 1 楼答案
在java 8中使用removeIf很容易,如下所示:
以及输出:
# 2 楼答案
下面的groovy代码应该计算差异(请注意,返回的集合将包含大写值):
但您也可以使用基于流的计算。这具有稍高的空间复杂度,但应具有线性时间复杂度: