package com.itranswarp.learnjava; import java.util.*; 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去除重复消息 // list 转换成 set 自动去重 : 需要对 Message类,覆写equals() hashCode() 方法,否则还是无法去重 Set<Message> set = new HashSet<>(received); // list 转换成 ArrayList 可编辑list对象 return new ArrayList<>(set); // 第二种 // 新建List用来返回, received 是 list.of() 返回的list是只读模式 // List<Message> list = new ArrayList(); // 定义成String类型,就不用需要对 Message类,覆写equals() hashCode() 方法,因为String,int底层代码已经实现了 // Set<String> set = new HashSet<>(); // for(Message m: received) { // if(set.add(m.text)) { // 内容相同 是false // list.add(m); // } // } // return list; } } class Message { public final int sequence; public final String text; public Message(int sequence, String text) { this.sequence = sequence; this.text = text; } @Override public boolean equals(Object o) { if(o instanceof Message) { Message message = (Message) o; return this.sequence == message.sequence && Objects.equals(this.text, message.text); } return false; } @Override public int hashCode() { return Objects.hash(this.sequence, this.text); } }
Sign in to make a reply
用户7570525982