Selecteer de top 3 items van een lijst met lambdaj

Ik wil de top 3 items van een java-lijst selecteren.

Ik weet hoe ik de lijst moet sorteren (zie de code), maar ik weet niet hoe ik de top 3 van deze lijst met de hoogste waarden moet selecteren ( [3.0, 5.5, 7.2] ) .

Ik veronderstel ik subList() kon gebruiken, maar ik wil weten of er een manier is om dit in lambdaj te doen.

import java.util.Arrays;
import java.util.List;
import static ch.lambdaj.Lambda.*;

public class Example {
    public static void main(String[] args)
    {
        List list = Arrays.asList(5.5,1.5,7.2,3.0,0.5);
        System.out.println(list);
        List sortedList = sort(list,on(Double.class).doubleValue());
        System.out.println(sortedList);
    }
}
0
Ik denk dat sublijst is zoals jij het doet (maar denk eraan dat het een lijst weergave oplevert).
toegevoegd de auteur Xaerxess, de bron

1 antwoord

Waarom zou u lambdaj gebruiken? Dit is een eenvoudig genoeg taak die als volgt kan worden gedaan:

List list = Arrays.asList(5.5,1.5,7.2,3.0,0.5);
System.out.println(list);

List sortedList = sort(list, on(Double.class).doubleValue());
System.out.println(Arrays.toString(sortedList.subList(0, 2).toArray()));

lambdaj has no real use here. Since you are only asking to get parts of the list, and not to modify it in any way, using Lists built in method is the best solution.

Als u echt lambdaj wilt gebruiken, heeft LambdaList een subLijst() -methode, maar dat is precies hetzelfde als dat in de lijst interface van Java SE.

2
toegevoegd