Ciao a tutti!
Devo leggere da file e ordinare 20 milioni di interi in ordine crescente. In breve, quello che il mio programma fa è:
-Leggo gli interi sul file e li salvo all'interno di un ArrayList.
-Chiedo all'utente in che modo vuole ordinarli.
-Stampo a video i numeri ordinati.
Il mio programma funziona come dovrebbe se nel file metto solamente qualche numero di prova (tipo 20 numeri interi) ma nel momento in cui gli passo il file con 20 milioni di interi mi da errore:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at usersimulation.UserSimulation.fileReader(UserSimulation.java:49)
at usersimulation.UserSimulation.main(UserSimulation.java:77)
Per leggere i numeri contenuti in questo file ho dovuto dichiarare tutto come Long - altrimenti mi diceva che i numeri erano troppo grandi e non rientravano nel range degli int.
In realtà, io mi sto salvando questi 20 milioni di interi in un ArrayList solo per comodità. Se c'è un modo per leggerli e ordinarli direttamente all'interno del file che gli passo (senza modificarne il contenuto) e poi magari salvare quelli ordinati in un altro file nuovo mi va bene uguale!
Come posso risolvere?