ciao, si sono 20 milioni di record.
io ho provato a fare cosi e lo ordina metto il codice sotto.
il problema è che non riesco a farlo con i tipi generici.
mi potresti dare una mano per capire come funzionano i tipi generici ?
grazie mille
codice:
package sort;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
public class mainSort {
public static void main(String[] args) {
try{
ArrayList<records> lista = new ArrayList<records>();
FileReader input = new FileReader("C:/file.csv");
BufferedReader f = new BufferedReader(input);
String linea ;
int i = 0;
while((linea = f.readLine()) != null){
int id = Integer.parseInt(linea.split(",")[0]);
String field1 = linea.split(",")[1];
int field2 = Integer.parseInt(linea.split(",")[2]);
float field3 = Float.parseFloat(linea.split(",")[3]);
lista.add(new records(id, field1, field2, field3 ));
System.out.println(i++);
}
f.close();
insertionSort s = new insertionSort(lista);
s.sort();
for(records p: s.getInputList()){
System.out.println(p.getField2());
}
}
catch(Exception e){
System.out.println("verificato un errore");
}
}
}
codice:
package sort;
import java.util.ArrayList;
public class insertionSort {
private ArrayList<records> inputList = new ArrayList<records>();
public ArrayList <records> getInputList() {
return inputList;
}
//costruttore
//tramite il costruttore passiamo a insertionSort la lista
public insertionSort(ArrayList<records> input){
this.inputList = input;
}
public void sort (){
records tmp ;
for(int i=1; i< inputList.size(); i++){
for(int j = i; j>0; j--){
int key = inputList.get(j).getField2();
if(key < inputList.get(j-1).getField2()){
tmp = inputList.get(j);
inputList.set(j, inputList.get(j-1));
inputList.set(j-1, tmp);
}
}
}
}
}
codice:
package sort;
public class records {
private int id;
private String field1;
private int field2;
private float field3;
public records(int id, String field1, int field2, float field3){
this.id = id;
this.field1 = field1;
this.field2 = field2;
this.field3 = field3;
}
public int getId(){
return id;
}
public String getField1(){
return field1;
}
public int getField2(){
return field2;
}
public float getField3(){
return field3;
}
}