如何转换为lambda表达式

时间:2017-11-20 10:07:06

标签: java lambda

我有地图,我应该找到值,但值可能为空。

import matplotlib.pyplot as plt
import matplotlib as mpl
import math

fig, ax = plt.subplots()
size = 1000
radius = math.sqrt(size)/2.
points = ax.scatter([0,1], [0,1], s=size)
arrow = mpl.patches.FancyArrowPatch(posA=(0,0), posB=(1,1), 
                                    arrowstyle='-|>', mutation_scale=20, 
                                    shrinkA=radius, shrinkB=radius)
ax.add_patch(arrow)

plt.show()

我知道如何分开做,但我不知道如何一起做。请帮助将其转换为lambda表达式。

1 个答案:

答案 0 :(得分:2)

  1. 首先,您要创建要处理的Stream个元素。在您的情况下,您创建Stream输入entrySet()的{​​{1}}。

  2. Map语句可以轻松转换为if来电,只保留filter()通过Stream&#39}的元素。 s filter

  3. 然后您将通过过滤器的任何Predicate流转换为Entry(我假设' sa entry.getValue().getName())。

  4. 最后,您可以将这些String收集到某些String中。下面我将这些元素收集到Collection,但您可以使用您想要的任何List

    Collection
  5. 正如Ole评论的那样,由于您没有使用List<String> featureNames = features.entrySet() .stream() .filter(entry -> entry.getValue().getGroup() != null && entry.getValue().getGroup().getGroupId().equals(groupId)) .map(entry -> entry.getValue().getName()) .collect(Collectors.toList()); 的密钥,因此您可以处理Map的值而不是Map的值:

    entrySet