4 Gigabyte RAM'li bir bilgisayar ve 10 Gigabyte bellek kullanımına sahip bir dosyam var. Şimdi dosyasındaki her satır yüzden yazdım Aşağıdaki kod benzersiz olup olmadığını kontrol etmek istiyorum:4 GB RAM ile 10 GB dosyada benzersiz satırlar nasıl oluşturulur
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class Cleaner {
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.out.println("Too less parameters!");
return;
}
File file = new File(args[0]);
BufferedReader buff = new BufferedReader(new FileReader(file));
String line;
Set<String> set = new HashSet<String>();
while ((line = buff.readLine()) != null) {
set.add(line);
}
FileWriter fw = new FileWriter(args[1]);
for (String s : set) {
fw.write(s + "\n");
fw.flush();
}
fw.close();
buff.close();
}
}
Ama benim sorum bu yüzden bir OutOfMemoryException olsun:
benim hemen benim kodunu değiştirmek gerekir nasıl her satırın benzersiz olduğu bir dosya mı?
Yardımlarınız için şimdiden teşekkür ederiz.
Parçalara bölün ve iki kez karşılaştırın. Ya da her bir çizgiyi karıştır ve sadece hashı hatla birlikte sakla. – user
Karma ile ilgili sorun, her satırın yalnızca bir karma olduğunu ve muhtemelen bazı yinelenen satırları kaçırmamı nasıl engelleyeceğidir. –
RandomAccessFile'a bir bakın, RandomAccessFile 'a' satır 1'i okuyabilir ve RandomAccessFile 'b' nin diğer tüm satırlarıyla karşılaştırabilirsiniz. Bundan sonra satır 2 ve benzeri – user