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);
}
}