当前位置: 首页 > 知识库问答 >
问题:

获取两个arrayList之间的差异,但以大写字母进行比较

戚英逸
2023-03-14

我有两个arrayList,我需要比较它们,得到唯一值,并用它们构建一个新的数组,问题是一些值是相同的,但大写,所以它们不应该显示为唯一值。这是我的代码,很好用,但是很慢

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个答案

胥博文
2023-03-14

下面的groovy代码应该计算差异(注意返回的集合将包含大写值):

parsedLocal*.toUpperCase() - parsedRemote*.toUpperCase()

但也可以使用基于流的计算。这具有稍高的空间复杂度,但应该具有线性时间复杂度:

Set<String> set1 = parsedLocal.stream()
        .map{it.toUpperCase()}
        .collect(Collectors.toSet());
List<String> retained = parsedRemote.stream()
        .filter{!set1.contains(it.toUpperCase())}
        .collect(Collectors.toList());
 类似资料:
  • 我的问题是,我要比较Java中的两个ArrayList 例如 通过比较方法,我知道这些数组是不同的 (如果数组具有相同的元素,即使它们的顺序不同,我的方法也返回false,如果它们具有相同的元素,则返回true) 因此,该方法将返回FALSE 我的问题是: 请注意,我将在这些ArrayList中包含多个对象,而且方法效率也很重要(不是很重要,但至少很重要)。我在这里看到了答案,但我不确定哪一个更好

  • 我正在设置闹钟的日历日期。闹钟时间设置了小时、分钟、格式和日期。我还想抓住现在的时间,比较两者之间的差异。所以,如果闹钟时间设置为周三,现在时间是周四,我想知道周四到周三之间有多少天。我还需要时间和分钟。 我尝试过每一个例子,但似乎都不管用。 JAVA方法 我确实尝试过这个。 这只是不太正确。它说是2天,所以我假设它是从闹钟日(星期二)到星期四(今天)。我需要的是从今天(星期四)到星期二。从现在起

  • 问题内容: 我有以下Python数据结构: 我正在寻找在两个列表之间获得增量的最佳方法。Python中有什么东西比JavaScript Underscore.js(_.difference)库方便吗? 问题答案: 用途:

  • 问题内容: 与oracle diff 相同:如何比较两个表?除了在MySQL。 假设我有两个表t1和t2,它们的布局相同,但是可能包含不同的数据。 区分这两个表的最佳方法是什么? 更准确地说,我正在尝试找出一个简单的SQL查询,该查询告诉我t1中某一行的数据是否不同于t2中相应行的数据 看来我不能使用相交也不能减去。当我尝试 我收到错误代码: [错误代码:1064,SQL状态:42000]您的SQ

  • 我错过了什么?

  • 问题内容: 说我有一个Java bean /有100个字段的实体(是否继承,在这种情况下不相关)。更新操作后- 在事务中,我想确定修改哪些字段以跟踪CVS之类的更新。最简单的方法是什么?有任何框架建议吗?我是否应该为此对象创建两个实例并遍历所有字段并匹配字段的值?在这种情况下最佳平等方法会如何出现?以下equals()看起来很尴尬: 问题答案: 您可以使用Apache Commons Beanut