Java list 本有顺序,为什么 用 stream 流转完 Map b 变成无序的了,求大佬指点。

2019-09-12 17:59:11 +08:00
 571726193
比如 list<Order> 里装的都是按时间排好序的,

list.stream().collect(Collectors.toMap())
变成无序的 le,源码理解有难度,求指导
6681 次点击
所在节点    Java
7 条回复
reidxx
2019-09-12 18:06:10 +08:00
map 本身就是无序的啊。
自己 new 一个 map,往里面塞数据,遍历打印几次,每次顺序都可能不一样。
ignore
2019-09-12 18:10:15 +08:00
可以使用 linkedHashMap
freebird1994
2019-09-12 18:13:02 +08:00
map 是无序数据结构啊…这问题令人无语
zzzzbw
2019-09-12 18:21:09 +08:00
前面回答的不是很确切吧。map 只是接口啊,是由于(Collectors.toMap())生成的是一个 HashMap,而 HashMap 是无序的。至于 HashMap 为什么无序的可以去了解一下 哈希表 这种数据结构。
wysnylc
2019-09-12 18:57:52 +08:00
toMap()默认是 HashMap,而 Hash 是不保证有序的
要想有序就改成 Collectors.toMap(k->k,v->v, (k1,k2)->k2,LinkedHashMap::new)
EatYolkNot
2020-10-14 00:12:16 +08:00
@wysnylc 请问这个 k1,k2 指代是啥意思?
wysnylc
2020-10-14 10:13:27 +08:00
@EatYolkNot #6 key 相同时的合并规则

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/600486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX