对list 集合对象中 重复度数据进行排序
1、实体类 中 实现 Comparable 接口中的compareTo 方法
用 什么来比较 集合中的排序
2、对集合中的的对象进行去重,重写 hashCode 方法和 equals方法
package com.huayi.minprogramdemo.entry;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
import java.util.Objects;
/**
* Database Table Remarks:
* 聊天记录表
* <p>
* This class was generated by MyBatis Generator.
* This class corresponds to the database table message
*
* @mbg.generated do_not_delete_during_merge
*/
@Data
public class Message extends BaseEntity implements Comparable<Message> {
private User user;
@TableId(value = "mId", type = IdType.AUTO)
private Integer mId;
// 消息内容
private String mPostMessage;
// 消息发送状态
private Integer mStatus;
//发送时间
@JSONField(format = "yyyy-MM-dd HH:mm")
private Date mTime;
// 消息类型id
private Integer mMessageTypeId;
// 发送方 id
private String mFromUserId;
// 接受方 id
private String mToUserId;
@Override
public int compareTo(Message o) {
return this.mTime.compareTo(o.getMTime());
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Message message = (Message) o;
return message.getUser().getUsername().equals(user.getUsername()) && message.getUser().getUserId().equals(user.getUserId());
}
@Override
public int hashCode() {
String username = user.getUsername();
String userId = user.getUserId();
return Objects.hash(username, userId);
}
}
排序方法实现
1、Collections.sort(list,new Comparator(){
@Override
public int compare(Message o1, Message o2) {
return o2.getMTime().compareTo(o1.getMTime());
}
});
集合中去重:
通过实体类中比较 userName 和userId 是否相同,如果相同即认为对象相等
Set messageSet = new HashSet<>(sendMessages);
@Override
public String selectNewMessageList(String userId) {
List<Message> sendMessages = messageMapper.selectSendNewMessageList(userId);
List<Message> receiveMessages = messageMapper.selectReceiveNewMessageList(userId);
sendMessages.addAll(receiveMessages);
// 对数组进行排序==降序,对重复的数据 给 remove 掉
Collections.sort(sendMessages, new Comparator<Message>() {
@Override
public int compare(Message o1, Message o2) {
return o2.getMTime().compareTo(o1.getMTime());
}
});
// 对集合中的元素进行去重
Set<Message> messageSet = new HashSet<>(sendMessages);
List<Message> messageList = new ArrayList<>(messageSet);
// messageList.forEach(System.out::println);
return JSON.toJSONString(messageList);
}