Java 8 如何从列表中创建惊人的列表
假设我们有一个列表:Java 8 如何从列表中创建惊人的列表,java-8,java-stream,Java 8,Java Stream,假设我们有一个列表: [1,2,3,4,5,6,7] 对于给定的长度,例如3,我想创建一个列表,其中包含: [1,2,3] [2,3,4] [3,4,5] ... 子列表中的元素数为指定的长度(3) 我知道如何在plan Java中实现这一点: List<List<Integer>> function(List<Integer> s, int m) { if(s.size() < m) throw new IllegalArgumentExc
[1,2,3,4,5,6,7]
对于给定的长度,例如3
,我想创建一个列表,其中包含:
[1,2,3]
[2,3,4]
[3,4,5]
...
子列表中的元素数为指定的长度(3)
我知道如何在plan Java中实现这一点:
List<List<Integer>> function(List<Integer> s, int m) {
if(s.size() < m) throw new IllegalArgumentException();
List<List<Integer>> result = new ArrayList<>();
for(int i = 0 ; i < s.size() - m + 1 ; i ++) {
List<Integer> sub = s.subList(i, i+m);
result.add(sub);
}
return result;
}
List函数(List s,int m){
如果(s.size()
但我想知道如何使用Java8流来实现它
有人能帮忙吗?好的。我是这样锻炼的:
List<List<Integer>> function(List<Integer> s, int m) {
return IntStream.range(0, s.size() - m + 1).mapToObj(index -> s.subList(index, index + m)).collect(Collectors.toList());
}
List函数(List s,int m){
返回IntStream.range(0,s.size()-m+1).mapToObj(index->s.subList(index,index+m)).collect(Collectors.toList());
}
我的测试表明它是正确的。但是有更好的解决方案吗?“我知道如何在plan Java中实现它”请显示plan Java代码添加的代码。