Java Set<String>类型的字符串[“70_40_30”,“50_60_80”]怎么再把每一条数据根据"_"字符拆分出来,放到新的Set<String>类型里面,使用lambda
时间: 2024-11-30 20:14:23 浏览: 21
在Java中,你可以使用`Stream` API 和 `Collectors` 来实现这个操作。假设我们有一个`List<String>`包含你提到的数据,可以按照以下步骤进行:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> data = Arrays.asList("70_40_30", "50_60_80");
// 使用 Stream 转换并收集到一个新的 Set 中
Set<Map.Entry<String, String>> result = data.stream()
.map(s -> s.split("_")) // 按 "_" 分割字符串
.collect(Collectors.toMap(
parts -> parts[0], // 第一个元素作为 key
parts -> parts[1] // 第二个元素作为 value
));
System.out.println(result); // 输出结果:{70=40, 30, 50=60, 80}
}
}
```
这里,`map` 函数将每个字符串转换成一个包含两个元素的数组 (`parts`),然后 `toMap` 函数将数组的前两个元素分别作为键值对存入 `Map` 中。由于 `Set` 不允许有重复的元素,所以最后得到的是一个无序且不重复的键值对集合。
如果你需要一个`Set<String>`而非`Set<Map.Entry<String, String>>`,可以直接修改一下 `toMap` 的创建方式:
```java
Set<String> stringResult = data.stream()
.map(s -> s.split("_"))
.flatMap(parts -> Arrays.stream(parts)) // 将二维流展平为一维
.distinct() // 移除重复元素
.collect(Collectors.toSet());
```
现在,`stringResult` 应该包含了所有原始数据按 "_ " 分割后的单独字符串,没有重复项。
阅读全文