使用lambdaj选择List的前3项

时间:2011-12-06 18:38:50

标签: java collections lambdaj

我想选择一个java List的前三项。

我知道如何对List进行排序(请参阅代码),但我不知道如何选择此列表中具有最高值的前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 个答案:

答案 0 :(得分:2)

为什么要使用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内置方法是最佳解决方案。

如果确实想要使用lambdajLambdaList使用subList()方法,但完全与Java SE的List接口中的那个。