比如 list<Order> 里装的都是按时间排好序的,
list.stream().collect(Collectors.toMap())
变成无序的 le,源码理解有难度,求指导
list.stream().collect(Collectors.toMap())
变成无序的 le,源码理解有难度,求指导
|
reidxxSep 12, 2019
1
map 本身就是无序的啊。
自己 new 一个 map,往里面塞数据,遍历打印几次,每次顺序都可能不一样。 |
|
ignoreSep 12, 2019
2
可以使用 linkedHashMap
|
|
freebird1994Sep 12, 2019 via Android
3
map 是无序数据结构啊…这问题令人无语
|
|
zzzzbwSep 12, 2019
4
前面回答的不是很确切吧。map 只是接口啊,是由于(Collectors.toMap())生成的是一个 HashMap,而 HashMap 是无序的。至于 HashMap 为什么无序的可以去了解一下 哈希表 这种数据结构。
|
|
5
toMap()默认是 HashMap,而 Hash 是不保证有序的
要想有序就改成 Collectors.toMap(k->k,v->v, (k1,k2)->k2,LinkedHashMap::new) |
|
EatYolkNotOct 14, 2020
6
@wysnylc 请问这个 k1,k2 指代是啥意思?
|
|
wysnylcOct 14, 2020
7
@EatYolkNot #6 key 相同时的合并规则
|