gpt4 book ai didi

java.lang.OutOfMemoryError 不断发生,存储一百万个字符串及其计数的更好方法是什么?

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

我目前正在尝试将一百万个字符串及其计数存储到 HashMap 中。但是,我的内存总是不够用。有没有更好的方法来做到这一点,以便我以后也可以为另一项任务保留其计数?

输入为:al = new String[]{"A", "C", "G", "T", "AC", "AG", "AT", "CG", "CT", "GT", "ACGT"};

public static Map < String, Integer > combinations(String[] al) {

HashMap < String, Integer > consData = new HashMap < String, Integer > ();
String nc;
for (String s: al) {
for (String k: al) {
for (String l: al) {
for (String m: al) {
for (String n: al) {
for (String o: al) {
nc = s + "|" + k + "|" + l + "|" + m + "|" + n + "|" + o;
consData.put(nc, 0);
System.out.println(nc);
}
}
}
}
}
}

最佳答案

从您的代码来看,您似乎需要存储数百万个字符串作为 map 的键。

我看到你在 map 上放了一个数字,最初是 0。

该值从 0 开始变化的频率是多少?如果这个值并不经常不同于零,那么你有一个 sparse matrix .

在这种情况下,您可以决定仅当数据的值不为零时才将数据存储在 map 中,并使用如下所示的方法来获取通用字符串的值:

public int getValue(String key) {
Integer value = consData.get(key);
if (value == null) {
return 0;
}
return value;
}

如果该值是具有该键的现有元素的计数器,则添加方法可能如下:

public int addKey(String key) {
Integer counter = consData.get(key);
if (counter == null) {
counter = 0;
}
counter = counter + 1;
consData.put(key, counter);
}

当您有数百万个可能值,但其中只有少数有效时,通常会使用此解决方案

关于java.lang.OutOfMemoryError 不断发生,存储一百万个字符串及其计数的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875594/

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