gpt4 book ai didi

java - 如何在 Java 中编写很长的数组?

转载 作者:行者123 更新时间:2023-12-02 06:00:46 25 4
gpt4 key购买 nike

我需要编写一个可以容纳 2^(N/2) 个元素的数组。 N 可以大到 2^62,大约有 20 亿个元素。有没有一种方法可以存储所有这些元素而不给 Java 更多内存?我正在使用此字符串列表来搜索冲突/查找重复项。

编辑

我正在尝试对 Sha-1 的一部分执行生日哈希攻击。 N 可以大到 2^62。为了执行生日攻击,我需要生成 2^(N/2) 个设定长度的随机字符串。

编辑编辑

这是一项密码学作业。

最佳答案

你可以做到这一点。我刚刚尝试了以下练习:

这是我的代码:

public class TestBigArray {
public static void main(String[] args) {
String[] a = new String[2*1_000_000_000];
}
}

我尝试使用默认堆运行它并得到了异常(exception):

c:\temp>java TestBigArray
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at TestBigArray.main(TestBigArray.java:3)

然后我将堆增加到 20G,程序开始运行:

c:\temp>java -Xmx20G TestBigArray

c:\temp>

但是我的笔记本电脑启动需要一分钟,Windows 在此期间几乎卡住了。

所以,我不建议你在实践中做这样的事情,除非你真的需要这个并且你有非常强大的机器可以运行。我建议您使用集合(例如列表),特别是 LinkedList

关于java - 如何在 Java 中编写很长的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com