public interface Person {
String getName();
Integer getOrder();
String getId();
}
public class HeavyPerson implements Person {
@Override
public String getName() {
return "heavyPerson";
}
@Override
public Integer getOrder() {
return 2;
}
@Override
public String getId() {
return "Transport";
}
}
public class LightPerson implements Person {
@Override
public String getName() {
return "lightPerson";
}
@Override
public Integer getOrder() {
return 1;
}
@Override
public String getId() {
return "Transport";
}
}
public class PersonEvaluator {
// map containing id and all its implementation
// Here "transport" id have LightPerson and HeavyPerson implementation.
Map<String, Set<Person>> persons = new HashMap<>();
// How to store set which have sorting based on order.
public void addPerson(Person person) {
if (!persons.containsKey(person.getId())) {
persons.put(person.getId(), new HashSet<>());
}
persons.get(person.getId()).add(person);
}
public void execute() {
// TODO execute person based on order. For key "Transport" from map the
// values should be taken out in order.
// order 1 should be executed first
// order 2 should be executed next.
}
}
在这里,我想以有序的方式将person的实现存储在map值中。实现定义了顺序(像一些按顺序执行的过滤器)。
我可以做的一件事是使用treeset代替hashset,但在这种情况下,所有实现都需要实现排序(比较逻辑),这是一种开销,因为对于所有实现,排序总是固定的。
如何做到这一点有什么建议吗?
1条答案
按热度按时间2w3rbyxf1#
如果你不想
*Person
要实现的类Comparable
,您可以简单地定义Comparator
把它传给TreeSet
施工单位: