使用stream将放string的list按下划线分割并排序
时间: 2024-12-14 15:15:24 浏览: 6
it-handshake:使用可迭代的流为二进制协议创建握手
你可以使用Java Stream API来实现这个功能。首先,假设我们有一个字符串列表,每个字符串都是以下划线分隔的数据。我们可以先将每个字符串按下划线拆分成子字符串,然后再对这些子字符串列表进行排序。
以下是一个示例:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
List<String> stringList = Arrays.asList("a_b_c", "d_e_f", "g_h_i");
// 使用Stream和split()方法按下划线拆分每个字符串
List<String[]> partsLists = stringList.stream()
.map(s -> s.split("_")) // 拆分
.collect(Collectors.toList());
// 对每个子字符串数组按照第一个元素(假设这是我们需要排序的关键)进行自然排序
partsLists.sort(Comparator.comparing(String[].::charAt, Comparator.naturalOrder()));
// 合并排序后的子字符串数组
List<String> sortedStrings = partsLists.stream()
.flatMap(Arrays::stream)
.sorted()
.collect(Collectors.toList());
System.out.println(sortedStrings); // 输出:[a, b, c, d, e, f, g, h, i]
```
这段代码首先将字符串列表转换为字符串数组列表,然后对每个数组应用`Comparator`进行排序,最后再将排序后的子字符串合并回一个列表。
阅读全文