今天看到了一个新奇的写法,是我没有学过的,也是没有见过的
需求代码
ArrayList<Object> messageList = new ArrayList<>();
List<MessageEntity> messagesEntityList = chatProcess.getMessages();
for (MessageEntity messageEntity : messagesEntityList) {
String name = messageEntity.getName();
String role = messageEntity.getRole();
String content = messageEntity.getContent();
Message message = new Message();
message.setName(name);
message.setContent(content);
message.setRole(role);
messageList.add(message);
}
- 以上代码是最原始的一种写法
- 目的是为了通过将List这个集合,转换成 List ,--------两个集合的转换
上述代码看懂了吧!!!!
使用简单的流式编程,建造者模式
List<MessageEntity> messagesEntityList = chatProcess.getMessages();
for (MessageEntity messageEntity : messagesEntityList) {
String name = messageEntity.getName();
String role = messageEntity.getRole();
String content = messageEntity.getContent();
//创建Message的流式编程
Message.builder()
.name(name)
.content(content)
.role(role)
.build();
messageList.add(message);
}
- 上述代码只是简单的将创建Messgae时,使用了流式编程,建造者模式
上述代码看懂了吧!!!!
流式集合转换
List<Message> messages = chatProcess.getMessages().stream()
.map(entity ->
Message.builder()
.role(entity.getRole())
.content(entity.getContent())
.name(entity.getName())
.build()
).collect(Collectors.toList());
- 是不是超级漂亮的代码
- 是不是???
这段Java代码是使用了Java 8的Stream API来处理一个名为chatProcess.getMessages()
返回的消息列表。具体地,代码做了以下几件事情:
-
chatProcess.getMessages()
:调用chatProcess
对象的getMessages
方法,获取一个消息列表。 即List形式 -
.stream()
:将获取到的消息列表转换成Stream,以便进行流式处理。 -
**
.map(entity -> ...)
:使用map
操作来转换Stream中的每一个元素(这里是entity
,代表列表中的每一个消息实体)。**转换逻辑如下: -
.collect(Collectors.toList())
:最后,使用collect
操作将转换后的Stream元素收集到一个新的List中。
整体来看,这段代码的目的是将chatProcess.getMessages()
返回的原始消息列表转换成一个新的Message
对象列表,其中每个Message
对象都根据原始消息实体进行了相应的字段设置。
这段代码利用Java 8的流式处理特性,简洁而优雅地完成了消息的转换和收集工作