如何创建具有嵌套通用参数的MinMaxPriorityQueue,例如:

MinMaxPriorityQueue<AtomicCountHolder<E>> sortedHeap;


我尝试了静态create()方法可以想到的各种变体,但Builder却无济于事。它与

MinMaxPriorityQueue<Integer> s = MinMaxPriorityQueue. <Integer>create();


但不适用于嵌套泛型。任何线索都会有所帮助。

最佳答案

MinMaxPriorityQueue.create()限制了通用类型必须实现Comparable接口,即该类型的实例具有自然顺序。

我假设AtomicCountHolder<E>没有实现Comparable。在这种情况下,您必须提供一个自定义Comparator,它定义类型的顺序。例如,

MinMaxPriorityQueue<AtomicCountHolder<E>> sortedHeap = MinMaxPriorityQueue.orderedBy(Ordering.natural().onResultOf(someFunction)).create();


假定您有一个Function接受AtomicCountHolder<E>并返回Comparable,例如Integer。假设E是可比较的,则可以编写一个Function并接受AtomicCountHolder<E extends Comparable<? super E>>并返回AtomicCountHolder所引用的内容。

什么是AtomicCountHolder btw?像AtomicInteger吗?

10-02 23:20