public class Main {
public static void main(String[] args) {
List<Message> received = List.of(
new Message(1, "Hello!"),
new Message(2, "发工资了吗?"),
new Message(2, "发工资了吗?"),
new Message(3, "去哪吃饭?"),
new Message(3, "去哪吃饭?"),
new Message(4, "Bye")
);
List<Message> displayMessages = process(received);
for (Message message : displayMessages) {
System.out.println(message.text);
}
}
static List<Message> process(List<Message> received) {
// TODO: 按sequence去除重复消息
Set<Message> s = new HashSet<>();
List<Message> l = new ArrayList<Message>();
for(Message tmp:received){
if(s.add(tmp))
l.add(tmp);
}
return l;
}
}
class Message {
public final int sequence;
public final String text;
public Message(int sequence, String text) {
this.sequence = sequence;
this.text = text;
}
public boolean equals(Object o){
if(o instanceof Message){
Message s = (Message)o;
return Objects.equals(s.text, this.text) && s.sequence == this.sequence;
}
return false;
}
public int hashCode(){
return Objects.hash(sequence, text);
}
}
AlaGeek
献丑了,评论里大佬们写的都挺简洁的,在下学艺不精,还覆写了equals和hashCode: