import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SergioIO {
public static List<String[]> lectura() { File archivo;
FileReader fr = null;
BufferedReader br;
List<String[]> registros = new ArrayList();
try { archivo = new File("C:\\entrada.txt"); fr = new FileReader(archivo);
br = new BufferedReader(fr);
// Lectura del fichero
String linea;
while ((linea = br.readLine()) != null) { //System.out.println(linea);
registros.add(linea.split("\t")); }
} catch (IOException e) { e.printStackTrace(System.out);
} finally { try { if (fr != null) { fr.close();
}
} catch (IOException e2) { e2.printStackTrace(System.out);
}
}
return registros;
}
public static void escritura(List<String[]> registros) { FileWriter fichero = null;
PrintWriter pw;
try { fichero = new FileWriter("C:\\salida.txt"); pw = new PrintWriter(fichero);
registros.forEach(r->{ for (int i = 0; i < r.length; i++) { pw.print(r[i] + (i + 1 < r.length ? "\t" : ""));
}
pw.println();
});
} catch (IOException e) { e.printStackTrace(System.out);
} finally { try { if (null != fichero) { fichero.close();
}
} catch (IOException e2) { e2.printStackTrace(System.out);
}
}
}
public static void main(String[] args) { List<String[]> registros = lectura();
List<String[]> salida = new ArrayList(registros.size());
Map<String, Integer> vendedores = new HashMap();
for (int i = 0; i < registros.size(); i++) { if (i == 0) { salida.add(new String[]{"Vendedor", "Fecha", "Cantidad", "TotalMes"}); } else { salida.add(new String[]{ registros.get(i)[0],
registros.get(i)[1],
registros.get(i)[2],
"0"
});
String nombre = registros.get(i)[0];
int total = Integer.parseInt(registros.get(i)[2]);
vendedores.put(nombre, vendedores.containsKey(nombre) ? vendedores.get(nombre) + total : total);
}
}
for (int i = 1; i < registros.size(); i++) { salida.get(i)[3] = vendedores.get(salida.get(i)[0]).toString();
}
salida.forEach(r -> { for (int i = 0; i < r.length; i++) { System.out.print(r[i] + (i + 1 < r.length ? "\t" : "\n"));
}
});
escritura(salida);
}
}