【发布时间】:2013-04-14 23:29:20
【问题描述】:
我正在用 java 编写一个程序来获取一个非常大的字符串(字符串 s
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String t = sc.nextLine();
int i=0;
while(t.charAt(i)==' ') i++;
t = t.substring(i);
String[] s = t.split(" +");
RecString[] stat = new RecString[s.length];
for(i=0; i<s.length;i++){
stat[i] = new RecString("");
}
int j=0;
for(i=0; i<s.length;i++){
int f=0;
for(int h =0; h<stat.length; h++){
if(stat[h].word.equals(s[i])){
f = 1;
stat[h].count++;
break;
}
}
if(f==0){
stat[j] = new RecString(s[i]);
j++;
}
}
for(i=0;i<=j;i++){
if(stat[i].word != ""){
System.out.println(stat[i].word+" "+(stat[i].count));
}
}
}
}
class RecString{
public String word;
public int count;
public RecString(String s){
word = s;
count = 1;
}
}
此代码适用于长度
请帮我优化我的程序
【问题讨论】:
-
你在计算每个单词的出现次数吗?!还是……?
-
用于这样一个微不足道的应用程序的内存量可能很大程度上取决于您的堆大小和 JVM 设置。换行读取也总是要求潜在的内存问题。
-
@DaveNewton,是的,我计算每个单词的出现次数。
-
我不是很懂代码;不知道为什么不只是单词图=>计数-应该是微不足道的。 “使用少于 16M 的内存”是什么意思?整个事情,包括 JVM?
-
@DaveNewton,是的,我计算每个单词的出现次数。我在使用 .split 后按字符串获取数组,并按记录(单词和计数)创建新数组。对于这条记录的所有元素,我设置 word = "" 和 count = 0。然后我通过数组 s 的元素,如果这个元素在 stat 中我增加这个单词的计数,否则我在 stat 中添加新单词跨度>
标签: java string optimization words