Discuss / Java / 使用HashSet,实现equals和hashCode

使用HashSet,实现equals和hashCode

Topic source

Andylbc

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

static List<Message> process(List<Message> received) {

        // TODO: 按sequence去除重复消息

        /* Set<Message> s = new TreeSet<Message>(new Comparator<Message>() {

            public int compare(Message m1, Message m2){

                return m1.sequence - m2.sequence;

            }

        }); */

        Set<Message> s = new HashSet<>();

        s.addAll(received);

        return new ArrayList<Message>(s);

    }

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 m = (Message) o;

            return Objects.equals(m.sequence, this.sequence);

        }

        return false;

    }

    public int hashCode(){

        return Objects.hash(sequence);

    }

}


  • 1

Reply