发布于2021-09-16 14:09 阅读(1312) 评论(0) 点赞(16) 收藏(3)
有对象列表:
[Object1, Object2, Object3, Object4, Object5]
它应该被拆分为以下结构:
[
[Object1, Object2, Object3]
[Object3, Object4, Object5]
]
这段代码给出了子列表最后一个元素没有重叠的拆分:
Streams.stream(Iterables.partition(maps,3)).collect(Collectors.toList());
结果是:
[Object1, Object2, Object3]
[Object4, Object5]
此处遗漏了Object3。
有没有优雅的方法来分割这个List
,重复
前一个子列表的最后一个元素作为下一个子列表的第一个元素?
我已经尝试过这种方式,但它看起来并不像我希望的那么优雅:
List<List<String>> res= new ArrayList<>();
for (int y = 0; y < input.size() - 1;) {
List<String> sub = paths.subList(y, y += 3);
res.add(sub)
--y;
}
一种 java-8带有流的解决方案,其中Intstream.iterate()
具有以下签名,只有 2 个参数:
IntStream iterate(int seed, IntUnaryOperator f)
如下:
List res = IntStream.iterate(0, i -> i + step - 1)
.limit(input.size() / (step - 1))
.mapToObj(i -> input.subList(i, Math.min(i + step, input.size())))
.collect(Collectors.toList());
具有step
尺寸为3,输出:
[[a, b, c]] //List<String> input = Arrays.asList("a","b","c");
[[a, b, c], [c, d]] //List<String> input = Arrays.asList("a","b","c","d");
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/285203/de6b6b49f55f05315799/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!