Obtendo os maiores elementos k de uma matriz dupla

O problema que estou enfrentando é este:

Eu tenho uma matriz dedoubles dos quais eu quero manter o topok valores maiores.

Eu já vi algumas implementações envolvendoArrays.sort. Por exemplo, emeste exemplo com questão relativa, sugere-se usar essa abordagem.Desde que eu estou interessado apenas no primeirok elementos que eu também experimenteiMinMaxPriorityQueue. Eu criei umMinMaxPriorityQueue com ummaximumSize:

Claro que há novamente autoboxing.

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

O problema é que a ordem é a ordem ascendente e é o oposto do que eu quero. Portanto, não posso usá-lo dessa maneira.

Para indicar os parâmetros reais do problema, minhas matrizes são sobre50 elementos longos e estou interessado em até o topok = 5 elementos.

Então, existe alguma maneira de contornar esse problema usando a segunda abordagem? Devo ficar com o primeiro, mesmo que eu realmente não precise de todos os elementos classificados? Você sabe se existe alguma diferença significativa no desempenho da velocidade (terei que usá-lo em várias situações, para que a velocidade seja necessária)? Existe alguma outra solução que eu possa usar?

Quanto ao desempenho, eu sei que posso teoricamente verificá-lo, mas estou um pouco sem tempo e se alguém tiver alguma solução, fico feliz em ouvi-lo (ou lê-lo de qualquer maneira).

questionAnswers(2)

yourAnswerToTheQuestion