我希望获得列表 l 的子列表,最多包含 pagesize 元素,我这样做到现在为止:
l.subList(first, (l.size() > first + pagesize) ? pagesize : l.size())
Apache公共中是否有一个方便的方法,使我的代码更具可读性?
答案 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()
部分并直接使用流。不确定整体解决方案的效率,但我发现它更具可读性。