重复行的打印次数应与它们在输入中出现的次数相同。需要特别注意,以使具有大量重复行的文件使用的内存不会超过唯一行数所需的内存。
我已经尝试了所有收集界面,但似乎没有一个适用于这个问题:(有人可以帮我吗??谢谢。
下面的代码内存效率低,因为它在 PriorityQueue 中存储了重复的行。希望这可以帮助
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
PriorityQueue<String> s=new PriorityQueue<String>();
String line;
int n=0;
while ((line = r.readLine()) != null) {
s.add(line);
n++;
while (n!=0) {
w.println(s.remove());
n--;
}
}