if(user==user_id){ userMsg.setNum(1); }当相等时仍未进入判断语句中
时间: 2023-06-11 09:10:08 浏览: 44
这段代码应该是用来判断用户ID是否与user_id相等,如果相等则将userMsg设置为1。但是在你提供的代码中,缺少了一些必要的上下文,所以无法确定问题出在哪里。
可能的原因:
1. user_id的值没有正确赋值,或者user的值没有正确获取。
2. 代码中有其他地方对userMsg进行了修改,导致无法进入判断语句中。
3. 代码中有其他地方对user_id进行了修改,导致无法与user相等。
你可以仔细检查一下代码中的变量赋值和修改情况,或者提供更多上下文信息,以便我们更好地帮助你解决问题。
相关问题
优化 while(result.next()){ UserMsg userMsg = new UserMsg(); String user_id=result.getString("user_id"); String time=result.getString("time"); String msg=result.getString("msg"); userMsg.setMsg(msg); userMsg.setUser_id(user_id); userMsg.setTime(time); if(user!=user_id){ userMsg.setNum(0); }else{ userMsg.setNum(1); } list.add(userMsg); }
可以考虑使用Map来存储用户最新的一条消息,避免重复读取数据库。具体代码如下所示:
```
Map<String, UserMsg> latestMsgMap = new HashMap<>();
while (result.next()) {
String user_id = result.getString("user_id");
String time = result.getString("time");
String msg = result.getString("msg");
UserMsg userMsg = latestMsgMap.get(user_id);
if (userMsg == null || userMsg.getTime().compareTo(time) < 0) {
userMsg = new UserMsg();
userMsg.setUser_id(user_id);
userMsg.setTime(time);
userMsg.setMsg(msg);
latestMsgMap.put(user_id, userMsg);
}
}
for (UserMsg userMsg : latestMsgMap.values()) {
if (user.equals(userMsg.getUser_id())) {
userMsg.setNum(1);
} else {
userMsg.setNum(0);
}
list.add(userMsg);
}
```
该代码首先创建了一个空的HashMap,用于存储每个用户的最新消息。然后在遍历结果集时,对于每个用户,先从Map中获取最新的一条消息。如果Map中不存在该用户的消息,或者当前消息比Map中的消息更新,则将当前消息替换Map中的消息。最后,遍历Map中的每个用户的最新消息,根据当前用户是否为指定用户,设置Num属性,并将消息添加到list中。这样可以避免读取重复的消息,提高了程序的效率。
private boolean isfromself; public boolean isIsfromself() { return isfromself; } public void setIsfromself(boolean isfromself) { this.isfromself = isfromself; } if(user_id==user){ userMsg.setIsfromself(true); }else{ userMsg.setIsfromself(false); }优化代码
优化代码可以使用三元表达式来简化if-else语句,如下所示:
```
userMsg.setIsfromself(user_id == user ? true : false);
```
也可以直接将判断语句的结果赋值给isfromself变量,如下所示:
```
userMsg.setIsfromself(user_id == user);
```
这样可以减少代码行数并提高代码可读性。