我有訊息串列,訊息類有 2 個屬性:
以下代碼:
class Message{
String message;
long time;
}
List<Message> listMessage = new ArrayList<>();
list.add("A", 1);
list.add("A", 2);
list.add("B", 1);
list.add("C", 1);
list.add("C", 2);
我想從串列中洗掉重復的訊息,但必須在串列輸入中保留最長時間的訊息
("A", 1), ("A", 2), ("B", 1), ("C", 1), ("C", 2)
期待結果
("A", 2), ("B", 1), ("C", 2)
uj5u.com熱心網友回復:
static class Message {
String message;
long time;
public Message(String message, long time) {
this.message = message;
this.time = time;
}
}
public static void putLatestMessage(Map<String, Message> messageMap, Message message) {
if (messageMap.containsKey(message.message) && messageMap.get(message.message).time >= message.time) {
return;
} else {
messageMap.put(message.message, message);
}
}
public static void main(String[] args) {
Map<String, Message> messageMap = new HashMap<>();
putLatestMessage(messageMap, new Message("A", 1));
putLatestMessage(messageMap, new Message("B", 2));
putLatestMessage(messageMap, new Message("A", 2));
putLatestMessage(messageMap, new Message("C", 2));
putLatestMessage(messageMap, new Message("D", 1));
}
這將解決您的問題。
PS - 請瀏覽 Java 中可用的基本資料結構及其用例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425640.html
上一篇:根據條件洗掉串列的重復項
下一篇:如何按字母順序對串列進行排序?
