Java 初学问题

2022-07-17 10:02:38 +08:00
 Richard14

正在一边看书一边学 java ,学到集合的时候有两个问题:

1 、一般按照经验,hashmap 是使用频率最高的一种数据结构,大多数场景都能一把梭。java 中的 hashmap 内部实现是有序的吗?也就是如果我按顺序向 hashmap 添加 x,y,z ,能否保证后续遍历中也是按 xyz 的顺序获取?

2 、看书注意到 java 提供了很多相似的数据结构:Queue ,Stack ,Deque ,LinkedList 。功能各有限制,尤其是 queue 和 stack 把使用方式限定在很小的范围。逻辑上应该是被 deque 包含的,然后又被 LinkedList 包含,这是否意味着按照通常码农的使用经验倾向于用 LinkedList 表达所有,而不是专门为了特殊场景选一个功能非常有限的特殊数据类型?因为看起来比如如果使用 Queue 这个类万一需要获取列表长度都很麻烦

3299 次点击
所在节点    Java
21 条回复
SuperMild
2022-07-21 09:47:13 +08:00
刚刚看 dev.java 看到关于 LinkedList 的说法:

- What was true for linked lists when computing was invented in the 60's does not hold anymore.
- The capacity of linked lists to outperform arrays on insertion and deletion operations is greatly diminished by modern hardware, CPU caches, and pointer chasing.

从数据结构上看,如果要在一个 list 中间插入元素、或删除元素,LinkedList 比 array 更高效。但由于硬件进步,这个差异已经变得非常小了。

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

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

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

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

© 2021 V2EX