android - Kotlin 中的最大数组大小
问题描述
我正在通过 Android Studio 3.1.3 在 Kotlin 中编程。我创建了一个 Long 类型的数组,它显然太大而无法编译。玩了一段时间后,我发现我可以编译的最大数组包含 8,207 个元素。包含 8,208 个或更多元素的数组导致编译错误。数组中有 350 行元素,其中包含按数字顺序排列的素数。两个问题:
有谁知道为什么会存在这个限制?8,208 是 (2^13 + 2^4),但这似乎是一个奇怪的临界点。所以,我怀疑这是限制的原因。
有没有办法增加数组的允许大小?
注意:在 Android 论坛上,有人建议我使用 ArrayList 而不是 ArrayLong。我很欣赏这个建议并打算尝试一下,但对长数组的限制对我来说仍然很奇怪。如果有人有更优雅的解决方案或对限制的解释,我很想听听!感谢您的时间。
解决方案
所以,你想要做的是这样的:
var a = longArrayOf(1,2,3,4,5,6,7,8...)
JVM有一个限制。方法的最大大小为 64K。
如果您反编译您的代码,您将收到数组中每个元素的类似信息:
DUP
SIPUSH 8206
LDC 8207
LASTORE
这就是你达到极限的地方。
推荐阅读
- python - Tkinter 在终端中工作但不在 sublime 中(mac)
- java - Android 上的 AnyChart 着色网格
- php - 如何在已由 mysql 填充的下拉列表中设置值
- c# - VSIX:从 VS2017 移植到 VS2019 的步骤
- python - 如何从特定文件夹中的 Outlook 中的不同帐户读取 Outlook 电子邮件?
- php - Laravel 注册页面未加载
- java - 如何在 java-Mysql 选择查询中使用带有参数的正则表达式?
- .net - 在 docker 内执行“dotnet watch run”不起作用(杀死进程'dotnet.exe run'时出错:系统找不到指定的文件)
- r - 如何清楚地可视化总和为相同值的多个类别的计数
- sql - 在 SQL 中插入新表会出错