java如何更改流<Object>的值?
我正在制作一个聊天应用程序
我正在使用内存来实现repository
在read
方法中,我想将isReadOrNot
更改为true
,并返回更改后的消息,其中isReadOrNot
值为false
,发送方和接收方匹配
store
是HashMap对象
Map<Long, Message> store = new HashMap<>();
我将向您展示Message
类以及我如何尝试失败的部分
public class Message {
private long index;
private long sender_id;
private long receiver_id;
private Date transmitted_time;
private Date read_time;
private boolean readOrNot;
private String text;
.
.
.
}
我是如何尝试的:
public List<Message> read(long sender_id, long receiver_id, Date date) {
long count = store.values()
.stream()
.filter(
message -> !message.isReadOrNot()
&& message.getSender_id() == sender_id
&& message.getReceiver_id() == receiver_id
&& Long.parseLong(message.getTransmitted_time().toString()) > Long.parseLong(date.toString())
).count();
return null;
}
问题是如何更改receivedOrNot
之前的date
值并与sender_id
,receiver_id
匹配
# 1 楼答案
溪流并不总是最好的方法。如果我这样做的话,我会使用循环来迭代消息,然后相应地修改
message
对象# 2 楼答案
如果我理解正确,所有通过筛选条件的
Message
对象都应该用setReadOrNot(true)
更新,和应该在List
中返回如果是这样,那么您可以使用
peek()
和collect(toList())
:要设置
read_time
,请使用lambda表达式块: