Obteniendo los elementos k más grandes de una matriz doble

El problema que estoy enfrentando es este:

Tengo una serie dedoubles de los cuales quiero mantener la cimak valores mayores

He visto algunas implementaciones que involucranArrays.sort. Por ejemplo eneste ejemplo Con un problema relativo, se sugiere utilizar este enfoque.Ya que solo estoy interesado en el primerok elementos con los que también he experimentadoMinMaxPriorityQueue. He creado unMinMaxPriorityQueue con unmaximumSize:

Por supuesto, hay nuevamente autoboxing.

Builder<Comparable> builder = MinMaxPriorityQueue.maximumSize(maximumSize);
MinMaxPriorityQueue<Double> top2 = builder.create();

El problema es que el orden es el ascendente y es el opuesto al que quiero. Entonces no puedo usarlo de esta manera.

Para establecer los parámetros reales del problema, mis matrices se tratan50&nbsp;elementos largos y estoy interesado en llegar a la cimak = 5&nbsp;elementos.

Entonces, ¿hay alguna forma de evitar este problema utilizando el segundo enfoque? ¿Debo quedarme con el primero aunque realmente no necesito todos los elementos ordenados? ¿Sabe si hay alguna diferencia significativa en el rendimiento de la velocidad (tendré que usar esto en muchas situaciones, así que ahí es donde se necesita la velocidad)? ¿Hay alguna otra solución que pueda usar?

En cuanto al rendimiento, sé que teóricamente puedo verificarlo yo mismo, pero estoy un poco fuera de tiempo y si alguien tiene alguna solución, estoy feliz de escucharlo (o leerlo de todos modos).