我正在使用以下方法,需要在Java 8中使用流和lamda。
public static void addMemberships(final int key, MembershipData[] members) throws SpiderException
{
HashMap<String, MembershipData> duplicates = new HashMap<>();
for(MembershipData m: members) {
duplicates.putIfAbsent(m.subjectOfCare, m);
}
members = duplicates.values().toArray(new MembershipData[0]);
internalMembershipToolkit.verifyData(key, members);
}
我尝试使用members.forEach(duplicates.putIfAbsent(m.subjectOfCare,m));但它没有用。如何用流替换for循环?
putIfAbsent
。您可以使用合并功能来消除重复项,从而流化数组的元素并将其收集到Map
。Map<String, MembershipData> duplicates =
Arrays.stream(members)
.collect(Collectors.toMap(m -> m.subjectOfCare,
Function.identity(),
(m1,m2)->m1));