IDEA告警:Can be replaced with ‘.values().stream()‘

简介: IDEA告警:Can be replaced with ‘.values().stream()‘

背景

  • IDEA 又搞黄色了!
  • image.png

详解

可替换为.values().stream()

检查信息:通知可以简化的流API调用链。它可以避免遍历集合时创建多余的临时对象。

此检查替换了以下调用链:

collection.stream().forEach() → collection.forEach()
collection.stream().collect(toList/toSet/toCollection()) → new CollectionType<>(collection)
collection.stream().toArray() → collection.toArray()
Arrays.asList().stream() → Arrays.stream() or Stream.of()
IntStream.range(0, array.length).mapToObj(idx -> array[idx]) → Arrays.stream(array)
IntStream.range(0, list.size()).mapToObj(idx -> list.get(idx)) → list.stream()
Collections.singleton().stream() → Stream.of()
Collections.emptyList().stream() → Stream.empty()
stream.filter().findFirst().isPresent() → stream.anyMatch()
stream.collect(counting()) → stream.count()
stream.collect(maxBy()) → stream.max()
stream.collect(mapping()) → stream.map().collect()
stream.collect(reducing()) → stream.reduce()
stream.collect(summingInt()) → stream.mapToInt().sum()
stream.mapToObj(x -> x) → stream.boxed()
stream.map(x -> {...; return x;}) → stream.peek(x -> ...)
!stream.anyMatch() → stream.noneMatch()
!stream.anyMatch(x -> !(...)) → stream.allMatch()
stream.map().anyMatch(Boolean::booleanValue) -> stream.anyMatch()
IntStream.range(expr1, expr2).mapToObj(x -> array[x]) -> Arrays.stream(array, expr1, expr2)
Collection.nCopies(count, ...) -> Stream.generate().limit(count)
stream.sorted(comparator).findFirst() -> Stream.min(comparator)

替换语义在某些情况下可能会有细微的差别。例如


当Collections.synchronizedList(...).forEach() 同步时,Collections.synchronizedList(...).stream().forEach()不同步

collect(Collectors.maxBy())将返回空的Optional,如果结果元素为null,而 Stream.max()在这种情况下将抛NullPointerException


目录
相关文章
IDEA之Stream表达式生成、调试
IDEA之Stream表达式生成、调试
536 1
IDEA告警详解:Optional.isPresent can be replaced with functional-style expression
类似 if(Optional.isPresent()) 的条件语句,可以被重写成函数式风格。
184 0
IDEA告警详解:Optional.isPresent can be replaced with functional-style expression
|
存储 缓存 Java
IDEA告警:Unnecessary unboxing ‘xxx.intValue()‘
显式编码拆箱已包装的原始数值。在Java5及以上的版本,拆箱是不必要的,可以安全地删除。那么 JDK5 到底做了啥
220 0
|
数据可视化 Java 程序员
IntelliJ IDEA 老炮,还没用过 Stream Trace 功能?
IntelliJ IDEA 老炮,还没用过 Stream Trace 功能?
IntelliJ IDEA 老炮,还没用过 Stream Trace 功能?
|
缓存 Java Maven
IDEA 告警:Library source does not match the bytecode for class
IDEA 告警:Library source does not match the bytecode for class
1584 0
IDEA 告警:Library source does not match the bytecode for class
取消IDEA的Autowired对字段注解告警
取消IDEA的Autowired对字段注解告警
201 0
取消IDEA的Autowired对字段注解告警
|
存储
IDEA 告警Unpredictable ‘new BigDecimal()‘ call
IDEA 告警Unpredictable ‘new BigDecimal()‘ call
439 0
|
7月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
507 27
|
7月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
969 18
|
9月前
|
IDE 程序员 开发工具
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
1752 13

热门文章

最新文章