使用流toMap将List<String> setCodeList转成map并检验setCodeList中是否有重复
时间: 2024-04-10 18:34:01 浏览: 55
你可以使用流(Stream)和 `Collectors.toMap` 方法将 `List<String>` 转换为 `Map<String, String>`,同时检查 `setCodeList` 中是否存在重复元素。以下是一个示例:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> setCodeList = List.of("A", "B", "C", "A");
Map<String, String> map = setCodeList.stream()
.collect(Collectors.toMap(code -> code, code -> code, (existingValue, newValue) -> existingValue));
System.out.println(map);
boolean hasDuplicates = setCodeList.size() != map.size();
System.out.println("Has duplicates: " + hasDuplicates);
}
}
```
输出结果将会是:
```
{A=A, B=B, C=C}
Has duplicates: true
```
在上述示例中,我们使用了流的 `stream` 方法将 `setCodeList` 转换为一个流。然后,我们使用 `Collectors.toMap` 方法来收集流中的元素,并将每个元素作为键和值添加到 `Map` 中。如果存在重复的键,则我们使用合并函数 `(existingValue, newValue) -> existingValue` 将现有值保留为键的对应值。
最后,我们通过比较原始列表的大小和生成的映射的大小,来检查是否存在重复的元素。如果列表的大小与映射的大小不相等,则意味着存在重复元素。在示例中,`setCodeList` 中有重复的元素,因此 `hasDuplicates` 的值为 `true`。
阅读全文