如何用Java 8中的流替换循环

问题描述 投票:-1回答:1

我正在使用以下方法,需要在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循环?

java for-loop object java-8 stream
1个回答
2
投票
您不需要putIfAbsent。您可以使用合并功能来消除重复项,从而流化数组的元素并将其收集到Map

Map<String, MembershipData> duplicates = Arrays.stream(members) .collect(Collectors.toMap(m -> m.subjectOfCare, Function.identity(), (m1,m2)->m1));

© www.soinside.com 2019 - 2024. All rights reserved.