映射和优先队列
Map and Priority Queues
我想创建一个地图,其中键作为产品 ID(整数),然后将值设为 priorityQueue 作为值。这将存储购买相同产品的所有用户对象。这需要根据某些逻辑按降序排列。
我不太确定如何在地图中对 desc 中的 pq 进行排序。通常我可以做 (a,b) -> Integer.compare(b,a) 但我不确定在这种情况下。
Map<Integer, PriorityQueue<User>> productAssociation = new HashMap<Integer, PriorityQueue<User>>();
给定一个
public class User {
private final int valueToSortOn;
public User(int valueToSortOn) {
this.valueToSortOn = valueToSortOn;
}
public int getValueToSortOn() {
return valueToSortOn;
}
}
还有一个
Map<Integer, PriorityQueue<User>> productAssociation = new HashMap<Integer, PriorityQueue<User>>();
然后使用 lambda 比较器创建新队列实例的方法可能如下所示:
int productId = 42;
PriorityQueue<User> productQueue = productAssociation.getOrDefault(productId, new PriorityQueue<>((u1, u2) -> u2.getValueToSortOn() - u1.getValueToSortOn()));
我想创建一个地图,其中键作为产品 ID(整数),然后将值设为 priorityQueue 作为值。这将存储购买相同产品的所有用户对象。这需要根据某些逻辑按降序排列。
我不太确定如何在地图中对 desc 中的 pq 进行排序。通常我可以做 (a,b) -> Integer.compare(b,a) 但我不确定在这种情况下。
Map<Integer, PriorityQueue<User>> productAssociation = new HashMap<Integer, PriorityQueue<User>>();
给定一个
public class User {
private final int valueToSortOn;
public User(int valueToSortOn) {
this.valueToSortOn = valueToSortOn;
}
public int getValueToSortOn() {
return valueToSortOn;
}
}
还有一个
Map<Integer, PriorityQueue<User>> productAssociation = new HashMap<Integer, PriorityQueue<User>>();
然后使用 lambda 比较器创建新队列实例的方法可能如下所示:
int productId = 42;
PriorityQueue<User> productQueue = productAssociation.getOrDefault(productId, new PriorityQueue<>((u1, u2) -> u2.getValueToSortOn() - u1.getValueToSortOn()));