Java20 Stream流

先看样例: 6172ec4aa15f514912c21e5c7e5e1516_MD5 使用: ca77f6473c1d99aaa625dff59260d9a1_MD5 API分为两类: 14a4e2bd9042569d0e85f214f68ab3ee_MD5 获取Stream流 0067ca81383b5a6b2df14cccfd6aab07_MD5 如果是map,那么就可以转成keySet和EntrySet再用. 零散数据需要是同种数据类型.

使用方式: 8c1b0bc75b84904d27357204899506ac_MD5 当然可以lamada表达式,就不多写了.

9562b9b3eeba7dd60f3ee38f85c69475_MD5 02fbcb73fbc88dbd9301e6d79e5a8d58_MD5

arr: bd06ec9f900e1de73c57eee660f8452a_MD5 也可以这样: df2f15be26c8a007807702dbebdb5dda_MD5 但是,有一个细节: 289a42d6d9c90f96d305894693ec72d9_MD5 也就是说这里是不会自动装箱拆箱的.为什么?

对于基本数据类型数组,Stream的of方法不会自动装箱。
这是因为Stream API 设计时,对于基本数据类型有专门的IntStream、LongStream、DoubleStream等特化流来处理。
如果使用Stream.of方法传入基本数据类型数组,它会将整个数组视为一个元素,而不是将数组中的每个元素作为独立的元素放入流中。
02e5958d91afb0792e7245d8c47c4a79_MD5 filter: a46d4c2e3e94173571d049d77ace41b8_MD5 也可以这样:cc6d734d44c679e91e2e840299202080_MD5

如果不使用链式编程: a058c287f156f67225276d33ac226d6f_MD5

那么Stream3那里会报错.Stream2正常 ea8bf634341d230682eaf2c785913cb6_MD5 为了提高阅读性,需要这样: 6e0105162ebdb62b52245a5367012eba_MD5

limit:参数就是过滤几个的意思.

distinct去重的时候,如果传的是自定义类型,一定要实现hashCode和equals concat:要保证ab中的元素一致.否则,得到的是两者共同父类的流.

map方法: b99f2b3ac61225f5c5ac9eeab2071200_MD5


7e718616277fa133a78fbe0cd439febb_MD5 count方法就是返回流里面有多少个函数. 32d8088915d5b0e510b96ed2681837af_MD5

如果要指定放置的类型: 4c062f9d29aa43a2aa8b5bc652e69cd4_MD5 8dce7baae9beddf535f8dc7ca39f8cf2_MD5 e0353cfea2c4ad9607d22efb72cfa3cd_MD5

collect: 700d90a5ed3ac46636ae677087265fa9_MD5 collectors的toList是静态方法,返回一个创建后的list bc66a721992919daac5ed6c3993359b7_MD5 这样实际上会保证去重的.(注:这里默认是hashMap) 3778ca6c7700d1789b7085eea77316ec_MD5 4c5d97b9e19b7b2c9fb7cd31936d262b_MD5 规则: 0e51ae2f65e2e18479cd85a0004802db_MD5 a8958f1b1535998de81734593561f96d_MD5 df0edcb5ab0d9f7b330603c0c4945024_MD5 lamada: 44a0dfeaef7f2643669a134af3d23ab7_MD5 c4ef80a0547a266f34537b35172b9546_MD5