Discuss / Java / 打卡

打卡

Topic source

AlaGeek

#1 Created at ... [Delete] [Delete and Lock User]

献丑了,评论里大佬们写的都挺简洁的,在下学艺不精,还覆写了equals和hashCode:

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


  • 1

Reply