给出一种解决方法,覆写equals和hashCode方法,规定不能传入相同的Message,创造Set接收List为参数,相反再创建List时接收Set为参数。
import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; public class Test { public static void main(String[] args) throws IOException { List<Message> received = new ArrayList(); received.add(new Message(1, "Hello!")); received.add(new Message(2, "发工资了吗?")); received.add(new Message(2, "发工资了吗?")); received.add(new Message(3, "去哪吃饭?")); received.add(new Message(3, "去哪吃饭?")); received.add(new Message(4, "Bye")); List<Message> displayMessage = process(received); for (Message message : displayMessage) { System.out.println(message.text); } } static List<Message> process(List<Message> received) { Set<Message> set = new HashSet<>(received); List<Message> receive = new ArrayList<>(set); return receive; } } 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 e = (Message)o; return this.sequence ==e.sequence; } return false; } @Override public int hashCode() { return Objects.hash(sequence); } }
Sign in to make a reply
征服天堂jj
给出一种解决方法,覆写equals和hashCode方法,规定不能传入相同的Message,创造Set接收List为参数,相反再创建List时接收Set为参数。