gpt4 book ai didi

java - ArrayList 与 ArrayList - 都存储从 0 到 9 的值..哪个需要更多内存?

转载 作者:行者123 更新时间:2023-12-01 17:51:01 24 4
gpt4 key购买 nike

有人问我这个问题... IntegerArrayListStringArrayList - 两者都存储值从 09 ...哪个需要更多内存?

最佳答案

假设列表创建如下:

    List<Integer> integers = new ArrayList<>();
integers.add(0);
integers.add(1);
// ...
List<String> strings = new ArrayList<>();
strings.add("0");
strings.add("1");
// ...

回答这个问题有两个层次。

首先是了解IntegerString的内存消耗。

因此,一个包含 1 个字符的 String 需要 40 个字节(在 Java 8 上为 32 个字节)。Integer 占用 16 个字节。

在此级别上,字符串列表比整数列表占用更多内存。

在第二级,您必须知道字符串文字是内部存储的,并且使用 Integer.valueOf 装箱 int 使用缓存来存储 -128 之间的值code> 且至少为 127。因此基本上 add("0")add(0) 都会使用缓存对象,并且可以说没有使用额外的内存。

因此,根据您是否考虑字符串池/整数缓存,答案是“字符串列表占用更多内存”或“两个列表占用相同数量的内存”。

如果这是一个面试问题,您可能应该给出两个答案。

ps。我个人不会从头脑中知道 StringInteger 的大小,但会猜测 String 会占用更多内存。

关于java - ArrayList<Integer> 与 ArrayList<String> - 都存储从 0 到 9 的值..哪个需要更多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50086070/

24 4 0