1

我想获得具有最多页面大小元素的列表l的子列表,我这样做到现在为止:

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

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

4

2 回答 2

6

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

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

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

于 2016-01-27T10:54:17.400 回答
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));
于 2013-06-05T11:19:45.727 回答