映射和优先队列

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()));