- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在看 THIS回答一个流行的 Java 问题。我知道 X 数据类型的 ArrayList 的好处是 get(5)
应该是瞬时的,因为找到第 5 个元素只是在数组中向前移动 5 个数据类型单位的问题您实际上必须访问任何数据。 LinkedList 需要访问每个节点的数据以找到下一个节点的位置,并继续此过程直到达到第 5 步。这就是 ArrayList 在检索数据方面优于 LinkedList 的原因。
但是,如果数据类型的大小是可变的呢?如果我声明一个带有 Object
类型参数的 ArrayList,以便我可以在 ArrayList 中添加一个 char(1 个字节)和一个 int(4 个字节),会怎样? ArrayList 如何知道下一个元素在哪里,因为它不能只向前行进 (sizeOfDatatype * steps)
直到到达目标?它会将数据存储为可用的最大数据类型,例如对齐方式吗?
最佳答案
经过几个小时的搜索,我找到了 THIS问题。它有点回答我的问题,但只是部分回答。此答案旨在为我的问题提供完整的答案。
~
问题是建立在 ArrayList 存储对象值(或原始数据类型的值)的错误前提之上的。虽然看起来不像,但 ArrayList 不存储值,它们存储对象引用。请注意如何可以 add(int i)
或 add(char c)
,但不能声明一个带有 int 作为类型参数的 ArrayList?原因是因为 ArrayLists 正在存储对象引用 essentially a pointer ,并遍历这些指针(所有指针都具有相同的大小,因为它们都是指针)。原始数据类型,例如 int,不是引用类型,它们是原始类型,因此不允许作为类型参数。由于 Autoboxing,您仍然可以使用 int 作为 add()
的参数,但这只是为了方便。
所以不,在 ArrayList 中存储多种数据类型时,get()
的性能不会受到影响,因为您只存储对对象的引用。
关于java - ArrayList 中存储多种数据类型时,ArrayList.get() 的性能是否受到影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852948/
我有以下 div 结构。 和下面的 CSS .profile_outer { border: 2px solid #660000; -moz-border-radius:
在我的服务器上托管了两个网站(比如 abc.com 和 test.xyz.com) 我正在尝试为 test.xyz.com 重建数据库,并在此过程中 1.我删除了与之相关的数据库。2.停止mysql(
我是一名优秀的程序员,十分优秀!