import java.util.*;
public class Hello {
public static void main(String[] args) {
List<Message> received = List.of(
new Message(1, "Hello!"),
new Message(2, "发工资了吗?"),
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) {
Set<Message> set = new TreeSet<>(new Comparator<Message>() {
public int compare(Message s1, Message s2) {
Integer s1int = new Integer(s1.sequence);
Integer s2int = new Integer(s2.sequence);
return s1int.compareTo(s2int);
});
List<Message> r2 = new ArrayList<>();
for (Message s : received)
if(set.add(s) == true)
r2.add(s);
received = r2;
return received;
class Message {
public final int sequence;
public final String text;
public Message(int sequence, String text) {
this.sequence = sequence;
this.text = text;
可以的,实际上你这个并没有用到TreeSet的排序功能,只是用了它的判重。在遍历received的时候就保证顺序了。
Sign in to make a reply
小米CEO余承东
import java.util.*;
public class Hello {
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) {
Set<Message> set = new TreeSet<>(new Comparator<Message>() {
public int compare(Message s1, Message s2) {
Integer s1int = new Integer(s1.sequence);
Integer s2int = new Integer(s2.sequence);
return s1int.compareTo(s2int);
}
});
List<Message> r2 = new ArrayList<>();
for (Message s : received)
if(set.add(s) == true)
r2.add(s);
received = r2;
return received;
}
}
class Message {
public final int sequence;
public final String text;
public Message(int sequence, String text) {
this.sequence = sequence;
this.text = text;
}
}