對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);
}