• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yurong3333333333
0.01D
V2EX  ›  程序员

为什么 List 可以转成 Stream 而 map 和 set 不能转成 Stream?

  •  
  •   yurong3333333333 · Nov 9, 2022 · 3888 views
    This topic created in 1458 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Nov 9, 2022
    感谢各位大佬指点
    Supplement 2  ·  Nov 9, 2022
    List 和 Set 可以直接使用 stream 而 map 不能直接使用 stream

    map 可以间接使用 stream:map.entrySet().stream()
    9 replies  •  2022-11-09 10:40:53 +08:00
    maowu
    maowu
    Nov 9, 2022 via Android❤️1
    1
    你说的是 Java8 吗?
    yurong3333333333
    yurong3333333333
    OP
    Nov 9, 2022
    2
    @maowu 对。一般只知道有这么个 stream 可以用,但搜索 stream 的设计思想,却搜不到什么干货。
    xiaofan2
    xiaofan2
    Nov 9, 2022❤️1
    3
    为什么不可以啊 你用 stream 不能遍历 map 和 set 吗
    AmericanExpress
    AmericanExpress
    Nov 9, 2022❤️1
    4
    1. 生成 stream 用到的是 Collection.stream()
    2. Map 不可以,因为 Map 不是 Collection: https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
    3. Set 可以,因为 Set 是 Collection

    https://stackoverflow.com/questions/39950576/why-streams-cannot-be-created-for-map-in-java8
    night98
    night98
    Nov 9, 2022❤️1
    5
    map 转一下 entry 就可以遍历了,不过有点文不对题,因为 stream 本身代表的是管道思想,map 的结构是 kv ,list 的结构通常意义上是非固定数量元素,所以 list to map 可以直接用
    dqzcwxb
    dqzcwxb
    Nov 9, 2022❤️1
    6
    aguesuka
    aguesuka
    Nov 9, 2022❤️1
    7
    set.stream() 可以直接调用,map 可以用 map.entrySet().stream();
    map 不是 collection 的原因参见 Java Collections API Design FAQ.
    设计思想就是 map-reduce, 而 map-reduce 的设计思想就是 monad 那一套, 不过我更认为是 functor.
    Leviathann
    Leviathann
    Nov 9, 2022❤️1
    8
    就是 jdk 团队懒的写工具方法
    像 kotlin 都可以 asSequence
    RainCats
    RainCats
    Nov 9, 2022❤️1
    9
    map.foreach((k,v) -> sout......)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1382 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 22:33 · PVG 06:33 · LAX 14:33 · JFK 17:33
    ♥ Do have faith in what you're doing.