java stream 提取子list 合并新list
时间: 2023-09-25 15:06:32 浏览: 96
### 回答1:
你可以使用Java 8的Stream API来实现提取子列表并合并新列表,例如:List<String> list1 = ...; List<String> list2 = ...; List<String> mergedList = Stream.concat(list1.stream(), list2.stream()) .collect(Collectors.toList());
### 回答2:
在Java中,我们可以使用Stream来提取子列表并将它们合并为一个新的列表。
首先,我们需要一个原始列表,以及要提取子列表的起始和结束索引。
然后,我们可以使用`subList`方法从原始列表中提取子列表。该方法接受两个参数,分别是起始索引和结束索引(不包括结束索引)。例如,`originalList.subList(startIndex, endIndex)`可以提取出从起始索引到结束索引之前的子列表。
接下来,我们可以使用Stream的`flatMap`方法将所有的子列表合并成一个新的列表。`flatMap`方法接受一个Function参数,该参数将一个元素映射为一个Stream,然后将所有这些Stream合并成一个新的Stream。
最后,我们可以使用`.collect(Collectors.toList())`方法将合并后的Stream转换为一个新的列表。
下面是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> originalList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int startIndex = 2;
int endIndex = 7;
List<Integer> subList = originalList.subList(startIndex, endIndex);
List<Integer> mergedList = subList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(mergedList);
}
}
```
在上述示例代码中,原始列表是1到10的整数。我们提取了从索引2到索引7之前的子列表(即3, 4, 5, 6, 7)。然后,我们将子列表中的每个元素合并为一个新的列表。最后,我们将合并后的列表打印出来。
输出结果为:[3, 4, 5, 6, 7]。
### 回答3:
Java Stream提供了一种简洁而高效的方法来提取子list并合并为新的list。在使用Stream操作时,我们可以使用filter()方法来筛选出满足特定条件的元素,然后使用collect()方法来将满足条件的元素收集到一个新的list中。
假设我们有一个包含一组数字的list,我们想要提取其中大于10的数字,并将它们合并到一个新的list中,那么我们可以使用以下的代码来实现:
```java
List<Integer> numbers = Arrays.asList(5, 10, 15, 20, 25, 30);
List<Integer> filteredList = numbers.stream()
.filter(n -> n > 10)
.collect(Collectors.toList());
```
在上述代码中,我们首先创建了一个包含一组数字的list。然后,我们使用stream()方法将list转换为一个Stream对象。接着,我们使用filter()方法筛选出大于10的数字,并将满足条件的数字收集到一个新的list中。最后,我们使用collect(Collectors.toList())将Stream流转换为一个List对象。
经过上述的操作,我们可以得到一个新的包含大于10的数字的list。
阅读全文