我有地图,我应该找到值,但值可能为空。
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表达式。
答案 0 :(得分:2)
首先,您要创建要处理的Stream
个元素。在您的情况下,您创建Stream
输入entrySet()
的{{1}}。
Map
语句可以轻松转换为if
来电,只保留filter()
通过Stream
&#39}的元素。 s filter
。
然后您将通过过滤器的任何Predicate
流转换为Entry
(我假设' sa entry.getValue().getName()
)。
最后,您可以将这些String
收集到某些String
中。下面我将这些元素收集到Collection
,但您可以使用您想要的任何List
。
Collection
正如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