使用Apache Commons获取子列表直到最后

时间:2013-06-05 11:11:30

标签: java list apache-commons

我希望获得列表 l 的子列表,最多包含 pagesize 元素,我这样做到现在为止:

l.subList(first, (l.size() > first + pagesize) ? pagesize : l.size())

Apache公共中是否有一个方便的方法,使我的代码更具可读性?

2 个答案:

答案 0 :(得分:3)

您不需要Apache Commons。它可以像这样实现:

l.subList(first, Math.min(l.size(), first + pagesize));

为了更进一步,你可以静态导入Math.min并减少更多的混乱:

import static java.lang.Math.min;

...

l.subList(first, min(l.size(), first + pagesize));

答案 1 :(得分:3)

从Java 8开始,您可以使用流

list.stream()
    .skip(first)
    .limit(pagesize)
    .collect(Collectors.toList());

如果可能的话,我甚至会跳过collect()部分并直接使用流。不确定整体解决方案的效率,但我发现它更具可读性。