Java 字符串数组中的字数

Java 字符串数组中的字数,java,arrays,max,limit,Java,Arrays,Max,Limit,在java中,字符串数组中最多可以存储多少个单词?我正在研究机器学习算法,我的需求量很大,大约3000字。建议我处理该数据的任何替代方案,因为我尝试过使用数组,但它不起作用。通过使用以下代码,您可以在JVM中找到可供处理的内存: long maxBytes = Runtime.getRuntime().maxMemory(); System.out.println("Max memory: " + maxBytes / 1024 / 1024 + "M"); 请注意,如果您想知道数组中可以包含

在java中,字符串数组中最多可以存储多少个单词?我正在研究机器学习算法,我的需求量很大,大约3000字。建议我处理该数据的任何替代方案,因为我尝试过使用数组,但它不起作用。

通过使用以下代码,您可以在JVM中找到可供处理的内存:

long maxBytes = Runtime.getRuntime().maxMemory();
System.out.println("Max memory: " + maxBytes / 1024 / 1024 + "M");
请注意,如果您想知道数组中可以包含多少字符串,请将整数除以~64,这是字符串的平均长度。(计算所有参考资料等)


如果您有一台average machine,您应该有至少2GB的RAM供您使用,仅用于分配变量,即约3000万个平均字。

您已声明收到ArrayIndexOutOfBounds异常,这是因为您使用的数组超过了声明的大小

String[] strings=new String[3000];
strings[3000]="something";//causes exception because strings[2999] is the last entry.
如果您知道需要多少个条目,然后声明一个该大小的数组,或者如果您需要一个可以扩展的数组样式容器,请使用arraylist

ArrayList<String> strings=new ArrayList<String>();
strings.add("Something"); //can be added as many times as you want (or that available memory will allow)
笔记
您可以通过告诉ArrayList的预期大小来提高它的性能,因此
ArrayList strings=newArrayList(3000)但这完全是可选的

您不能在一个字符串[]中保存3000个引用?!我们可以看到您尝试的代码
3000
不是一个很大的数字。您应该显示一些代码来确定真正的问题是什么。3000个单词就可以了。90万对或90万个单词可能更糟糕。30亿是巨大的。三千不是。虽然这是有用的信息,但严格来说,它不能回答这个问题。2千兆字节中的4.5亿字意味着每个字4.7字节。但是,假设一个char是2字节,char数组有一个8字节的对象头和4字节的长度,并且对象大小可能被舍入为8或16字节的倍数,以便在堆上进行组织,再加上String对象的char[]指针和两个不同的缓存hashcode,每个hashcode为4字节,字符串对象头和指向字符串对象所需的引用,一个典型的字符串字可能接近64字节,或2 GB中约3350万字节。是的,当然是stackoverflow Din不知道的新手it@user2773586主要是它标志着你的问题已经解决了(尽管人们仍然可以添加新的答案)。但是,不要让任何人(包括我)胁迫你接受,你可以随时改变你接受的答案
ArrayList<String> strings=new ArrayList<String>();
strings.add("Something"); //can be added as many times as you want (or that available memory will allow)
String string=strings.get(0); //returns the first entry
int size=strings.size(); //tells you how many items are currently in the array list