java collector的错误使用案例

   2024-10-07 6420
核心提示:错误使用案例:忽略了类型参数ListString list = Arrays.asList(Apple, Banana, Orange);SetString set = list.stream().collect

错误使用案例:忽略了类型参数

List<String> list = Arrays.asList("Apple", "Banana", "Orange");Set<String> set = list.stream()        .collect(Collectors.toSet());

这里将一个List转换为Set时,没有指定Collectors.toSet()的类型参数,导致编译器无法推断出正确的类型,会报错。

正确的做法是指定类型参数:

List<String> list = Arrays.asList("Apple", "Banana", "Orange");Set<String> set = list.stream()        .collect(Collectors.toSet());
错误使用案例:使用错误的收集器
List<String> list = Arrays.asList("Apple", "Banana", "Orange");Map<String, Integer> map = list.stream()        .collect(Collectors.toList());

这里将一个List转换为Map<String, Integer>时,却使用了错误的收集器Collectors.toList(),应该使用Collectors.toMap()。

List<String> list = Arrays.asList("Apple", "Banana", "Orange");Map<String, Integer> map = list.stream()        .collect(Collectors.toMap(Function.identity(), String::length));
错误使用案例:未处理重复键的情况
List<String> list = Arrays.asList("Apple", "Banana", "Orange", "Apple");Map<String, Integer> map = list.stream()        .collect(Collectors.toMap(Function.identity(), String::length));

这里将一个List转换为Map<String, Integer>时,存在重复的键"Apple",没有处理重复键的情况会导致运行时异常。

正确的做法是处理重复键的情况,可以通过提供一个合并函数来解决:

List<String> list = Arrays.asList("Apple", "Banana", "Orange", "Apple");Map<String, Integer> map = list.stream()        .collect(Collectors.toMap(Function.identity(), String::length, (existing, replacement) -> existing));

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号