在与我正在实现的聊天机器人聊天时,我有一个会话列表,每个会话都有一个消息列表。我想添加那些对话,它的最后一条消息不是聊天机器人消息,也不是由用户查看到一个对话列表。为此,我将其编码为:
List<ConversationDto> conversationsToBeSent = new ArrayList<>();
for (ConversationDto conversation : super.allConversations) {
if (conversation.getMessages() != null) {
if (conversation.getMessages().get(0).getMessageType().getId() != MessageTypeEnum.CHATBOT.getValue()
&& conversation.getMessages().get(0).getToViewedAt() == null) {
conversationsToBeSent.add(conversation);
}
}
}
这是有效的。问题是如何使用lambda和stream而不是for each编写代码。
2条答案
按热度按时间izj3ouym1#
要在列表中使用流,只需执行以下操作
super.allConversations.stream()
如果只想选择一些元素,可以使用filter
方法如下:ddrv8njm2#
你的问题是一个经典的“过滤集合”任务。这就是
Stream.filter()
方法确实如此。代码块:
通常可以转换为:
在您的例子中,代码转换如下。请注意以下代码块中的注解以获取解释: