gpt4 book ai didi

java - 如何比较两个包含具有共享属性的对象的数组列表

转载 作者:行者123 更新时间:2023-11-30 01:50:43 25 4
gpt4 key购买 nike

如何比较两个包含具有共享属性的对象的数组列表。

例如:我有一个 pojo 类 Abc

Class Abc {
String dataString ;
int rowNum;
......
}

Abc list1 contains - 2000 records & more sometimes
Abc list2 contains - 60 records & more sometimes

我想比较list1数据字符串和list2数据字符串并返回rownum if list1.dataString 注意等于 list2.dataString

如果数据字符串不匹配,我需要 List1 中的 rowNumber。 List2 Rownum可以忽略。

最佳答案

概括地说,您的代码应该:

  • 迭代列表1
  • 对于每个元素检查其数据字符串是否出现在 list2 中的某个位置
  • 如果是,则在结果中包含 list1 元素的行号

为了使代码更快,在第二步中可以预先计算 list2 数据字符串集。仍然是高级术语,代码是:

List<int> filtered(List<Abc> list1, List<Abc> list2) {
var dataStrings = setOf(list2.map(x -> x.dataString));

var abcs = list1.filter(x -> dataStrings.contains(x.dataString));

return abcs.map(x -> x.rowNum);
}

在标准Java中,代码当然看起来更加臃肿:

List<int> filtered(List<Abc> list1, List<Abc> list2) {
Set<String> dataStrings = list2.stream()
.map(x -> x.dataString))
.collect(Collectors.toSet());

return list1.stream()
.filter(x -> dataStrings.contains(x.dataString))
.map(x -> x.rowNum)
.collect(Collectors.toList());
}

关于java - 如何比较两个包含具有共享属性的对象的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com