java-list

The Redefine Team Lv5

java list 警告

我就不去查询java 在那个版本提供.toList方法了, 以前对一个stream 进行最后的收集是collect方法。
Collectors.toList 方法是一个可以修改的List, 然而现在变更为.toList 方法后,得到的结果是不可修改的List。

如果不注意这点, 那么在接下来的操作中肯恩那个会抛出noe错误, 说不支持此操作。

相同的问题也来自于List.of() 的实现, 该实现也是得到一个不可变更的List, 所以在得到这个List 后不能进行修改列表元素的操作, 比如sort 等等

个人体验

  1. 因为我目前在开发业务项目中一般会使用


    JDK 21 进行开发,但是因为生产系统使用的还是Jdk 17, 所以在这差距的4个版本中发生的变更就没有使用
    主要使用的一个很大的变化是一直使用var 来定义变量, 返回默认List[T] 基本不再使用guava 的Lists.newArrayList(), 而是使用List.of()
    当然因为很多JDK不支持的自动类型推导所以不是所有的变量定义都可以使用var myCustome = xxx 的方式,
    这问题还非常有意思, 因为如果自己来实现这种类型推导, 那么该如何实现呢?

  2. 和scala 相比

    目前还没有开始使用scala 3 来做开发, 所以主要还是基于scala 2.13.X 进行开发, 因为互操作性和团队建设的原因(这原因真是难得吐槽)

    scala 可以使用var, val 等来定义一个变量或者一个常量, 但是java 目前还不支持

    scala 定义的List[T] 直接就是一个不能修改的列表, 要使用可以修改的列表需要使用ListBuffer[T]

    通过不同定义来区分场景只会让人建立一次心智, 这种成本就很低, 而通过Java 的Collectors.toList(), List.of(), .toList() 的操作

    如果不首先去看这方面的问题,只能在开发过后通过测试来得到这些问题, 并在这些问题之后来建立这种认知

  • 标题: java-list
  • 作者: The Redefine Team
  • 创建于 : 2023-10-20 14:24:07
  • 更新于 : 2023-10-20 14:45:35
  • 链接: https://redefine.ohevan.com/2023/10/20/java-list/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
java-list