Выберите три верхних элемента списка, используя lambdaj - PullRequest
0 голосов
/ 06 декабря 2011

Я хочу выбрать 3 верхних элемента списка Java.

Я знаю, как сортировать список (см. Код), но я не знаю, как выбрать 3 верхние записи в этом списке, имеющие самые высокие значения ( [3.0, 5.5, 7.2] ).

Полагаю, я мог бы использовать subList (), но я хочу знать, есть ли способ сделать это в lambdaj.

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

public class Example {
    public static void main(String[] args)
    {
        List<Double> list = Arrays.asList(5.5,1.5,7.2,3.0,0.5);
        System.out.println(list);
        List<Double> sortedList = sort(list,on(Double.class).doubleValue());
        System.out.println(sortedList);
    }
}

1 Ответ

2 голосов
/ 06 декабря 2011

Зачем использовать lambdaj?Это достаточно простая задача, которая может быть выполнена следующим образом:

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

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

lambdaj здесь не имеет никакого реального использования.Поскольку вы просите только получить части списка, а не изменять его каким-либо образом, лучшим решением будет использование встроенного метода List.для использования lambdaj, LambdaList имеет метод subList(), но он точно такой же, как в интерфейсе List Java SE.

...