import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Merge {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\xx.txt"), Charset.forName("utf-8")));
Map<String, Bean> map = new HashMap<String, Bean>();
put(map,br);
br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\xx.txt"), Charset.forName("utf-8")));
put(map,br);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\merge.txt"), Charset.forName("utf-8")));
for(Entry<String, Bean> entry : map.entrySet()){
String newLine = entry.getKey() + "\t" + entry.getValue().clicks + "\t" + entry.getValue().cost;
bw.write(newLine);
bw.newLine();
}
bw.close();
System.out.println("end");
}
public static void put(Map<String, Bean> map, BufferedReader br) throws NumberFormatException, IOException{
String line;
String[] arr;
Bean bean;
while((line = br.readLine()) != null){
arr = line.trim().split("\t");
if(map.containsKey(arr[0].trim())){
bean = map.get(arr[0].trim());
bean.cost += Float.parseFloat(arr[2].trim());
bean.clicks += Integer.parseInt(arr[1].trim());
map.put(arr[0].trim(), bean);
}else{
bean = new Bean();
bean.clicks = Integer.parseInt(arr[1].trim());
bean.cost = Float.parseFloat(arr[2].trim());
map.put(arr[0].trim(), bean);
}
}
br.close();
}
public static class Bean{
public float cost;
public int clicks;
}
}