Hello EveryOne我想根据频率对文件的文本进行排序.我在运行时出现错误,内存错误.请尽快给出回复.
import java.io.*; import java.util.*; import java.util.Collections; class SortedInAlphaOrder { public static void main(String a[]) throws IOException{ Scanner input = new Scanner(System.in); System.out.println("Enter the filename with path : " ); //String filename = input.next(); File f = new File("Ashish.txt"); BufferedReader br = new BufferedReader(new FileReader(f)); StringBuffer buffer = new StringBuffer(); String str =br.readLine(); while((str!= null)){ buffer.append(str); buffer.append(" "); } ArrayListlist = new ArrayList (); StringTokenizer st = new StringTokenizer(buffer.toString().toLowerCase()); while(st.hasMoreTokens()){ String s = st.nextToken(); list.add(s); } HashSet set = new HashSet (list); List arrayList = new ArrayList (set); Collections.sort(arrayList); for(Object ob : arrayList){ System.out.println(ob.toString()); } } }
获取错误OutofMemoryHeap Error.Help me out.
我想我看到了你的问题.您分配str
给br.readLine()
一个,但您的while循环仅在停止时停止str == null
.我假设第一个br.readLine()
返回非null String
,你继续检查它是否null
在你的while循环中.结果,你的wile循环永远不会停止,你最终会得到一个OutOfMemory
错误.相反,您应该像这样更改您的代码(未经测试).
// ...other code String str; while((str = br.readLine()) != null){ buffer.append(str); buffer.append(" "); } // ...other code