嗨,我正在试着让用户 id
列和 foreign_id
多个csv文件中的列。循环之后( if (userAId.equals(userBId))
)找不到匹配的id。。。我以前尝试过下面的代码,但没有成功。有什么好建议吗?
public List<User> getObjectFiles(List<Map<String, String>>> csvFiles) {
List<User> user = new ArrayList<>();
List<Map<String, String>> userARows = csvFiles.get("userARows");
List<Map<String, String>> userBRows = csvFiles.get("userBRows");
List<String> userAId = new ArrayList<>();
for (Map<String, String> userARow: userARows) {
userAId = userARow.entry.stream()
.filter(key->key.getKey().equals("id")
.map(Map.Entry::getValue)
.collect(Collectors.toList());
}
List<String> userBId = new ArrayList<>();
for (Map<String, String> userBRow: userBRows) {
userBId = userBRow.entry.stream()
.filter(key->key.getKey().equals("foreign_id")
.map(Map.Entry::getValue)
.collect(Collectors.toList());
}
if (userAId.equals(userBId)) {
//....more code to add for List<User> user
}
return user;
}
1条答案
按热度按时间yc0p9oo01#
基本上不清楚你在问什么。
查看所附代码:
循环的内容(在Map上进行流式处理)很奇怪:
您迭代Map的所有条目,而不是使用简单的“get”,此外,您总是重写值,而不是累积值。
为什么不只是:
这又可以重写为流:
用户b的代码看起来完全一样,实际上您甚至可以将其提取到一个私有方法中,以避免相同的代码重复,但这是主观的:
无论如何,它不清楚你所说的“搜索停止”是什么意思-显然,如果列表不相等(具有相同的内容和元素顺序),程序将不会进入“如果”条件,你将到达最后一行。