首页 > 解决方案 > 将列表中的对象变量匹配和设置到不同的对象列表

问题描述

试图找出将列表中的对象变量与列表中不同类型的对象变量匹配的最佳方法。找到匹配项后,我想将第一个 Object 中的不同变量设置为与之匹配的另一个 Object 变量。解释这一点的最好方法是这样的:

我有一个List<Cat> cats和 cat 有变量 id、size、breed、name、vetId 和 vetName。

我也有一个List<Vet> vets,兽医有变量 id、地址、电话和姓名。

列表cats有一个 vetId 但 vetName 为空,我需要以某种方式从vets列表中添加名称。

我需要一种快速有效的方法来做到这一点。我对新的 Java 8 东西不太熟练,但我相信会有一种快速的方法来使用它。

标签: javaforeachcollectionsjava-8java-stream

解决方案


假设你有两个列表List<Cat> catsList<Vet> vets

您可以使用 Stream API 实现您所需要的:

// Build map of (vetId -> vetName) pairs
Map<Long, String> vetMap = vets.stream().collect(toMap(Vet::getId, Vet::getName));
// Update cats with proper vet names
cats.forEach(cat -> cat.setVetName(vetMap.get(cat.getVetId())));

推荐阅读