Discuss / Java / 作业

作业

Topic source
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);
        }
    }

    /**
     *  1.重写Message类的equals()和hashCode()方法,确保去重set生效。
     *  2.List转Set,Set转List
     */
    static List<Message> process(List<Message> received) {
        HashSet<Message> messageSet = new HashSet<>(received);
        ArrayList<Message> messageList = new ArrayList<>(messageSet);
        return messageList;
    }
}

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 (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Message message = (Message) o;
        return sequence == message.sequence && Objects.equals(text, message.text);
    }
    @Override
    public int hashCode() {
        return Objects.hash(sequence, text);
    }
}

皇蒂

#2 Created at ... [Delete] [Delete and Lock User]
package test.集合.使用EnumMap;import java.util.*;/** * @Author YCWB0265 * @create 2021/1/24 21:43 *//** * 在聊天软件中,发送方发送消息时,遇到网络超时后就会自动重发, * 因此,接收方可能会收到重复的消息,在显示给用户看的时候,需要首先去重 * 。请练习使用Set去除重复的消息: */public class 练习 {    public static void main(String[] args) {        List<Message> list = new ArrayList<>();        list.add(new Message(1, "Hello!"));        list.add(new Message(2, "发工资了吗?"));        list.add(new Message(2, "发工资了吗?"));        list.add(new Message(3, "去哪吃饭?"));        list.add(new Message(3, "去哪吃饭?"));        list.add(new Message(4, "Bye"));        List<Message> displayMessages = process(list);        for (Message displayMessage : displayMessages) {            System.out.println(displayMessage.text);        }    }    /**     * 1.重写Message类的equals()和hashCode()方法,确保去重set生效。     * 2.List转Set,Set转List     */    private static List<Message> process(List<Message> list) {        Set<Message> set = new HashSet<>(list);        List<Message> objects1 = new ArrayList<>(set);        return objects1;    }}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 (this == o) {            return true;        }        if (o == null || getClass() != o.getClass()) {            return false;        }        Message message = (Message) o;        return sequence == message.sequence && Objects.equals(text, message.text);    }    @Override    public int hashCode() {        return Objects.hash(sequence, text);    }}

  • 1

Reply