使用stream将放string的list按下划线分割取最后一个转换成数字并排序
时间: 2024-12-14 09:16:44 浏览: 14
在Java 8中,你可以使用Stream API来操作列表,包括对元素进行转换、筛选和排序。假设我们有一个`String`列表,每个元素都是由下划线分隔的词,我们需要提取最后一个单词(假设它是数字)并按数值大小排序。这里是如何实现的:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> timeList = Arrays.asList("one_two", "three_four", "ten", "eleven_twelve");
// 使用Stream处理列表
List<Integer> numbers = timeList.stream()
// 过滤非空时间
.filter(s -> !s.isEmpty())
// 提取最后一个单词(假设它是一个数字),通过正则表达式找到并转换为Integer
.map(s -> Integer.parseInt(s.split("_")[-1]))
// 去除重复
.distinct()
// 排序
.sorted()
.collect(Collectors.toList());
System.out.println(numbers); // 输出排序后的数字列表
}
}
```
这段代码首先创建了一个`String`列表,然后使用`stream()`方法将其转换为Stream。接着应用了一系列操作:`filter()`用于去除空字符串,`map()`将每个字符串拆分成单词并转换为整数,`distinct()`移除重复的数字,`sorted()`对数字进行升序排序,最后`collect()`收集结果到一个新的列表中。
阅读全文