如何创建具有嵌套通用参数的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
吗?