Discuss / Java / 学以致用

学以致用

Topic source
static List<Message> process(List<Message> received) {    /**     * 使用 TreeSet 有两个功能     * 1. Set 相同的元素就不会被添加到Set中,起到了去重的作用     * 2. TreeSet相比HashSet还具有排序的作用     * 3. 上面的两个共功能只需要重写Comparator.compare方法即可     */    TreeSet<Message> messages = new TreeSet<>((o1, o2) -> o1.sequence - o2.sequence);    messages.addAll(received);    return new ArrayList<>(messages);}
public class Code01 {
    public static void main(String[] args) {
        List<Message> received = Arrays.asList(
                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) {
        /**
         * 使用 TreeSet 有两个功能
         * 1. Set 相同的元素就不会被添加到Set中,起到了去重的作用
         * 2. TreeSet相比HashSet还具有排序的作用
         * 3. 上面的两个共功能只需要重写Comparator.compare方法即可
         */
        TreeSet<Message> messages = new TreeSet<>((o1, o2) -> o1.sequence - o2.sequence);
        messages.addAll(received);
        return new ArrayList<>(messages);
    }
}

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 obj) {
        if (obj == null) return false;
        if (obj instanceof Message){
            Message message = (Message) obj;
            return message.sequence == this.sequence &&
                    Objects.equals(message.text, this.text);
        }
        return false;
    }
}


  • 1

Reply