a.dat文件:
id,money
k001,5
k002,21
k003,30
k004,40
k002,20
b.dat文件:
id,money
k002,30
k005,49
k007,50
用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Lianxi
{
static Map map=new HashMap();
public static void main(String[] args) throws IOException {
String line = null;
String a=null,a1 =null;
String b=null,b1 =null;
BufferedReader in = new BufferedReader(new FileReader("F:\\a.txt"));
while((line = in.readLine())!=null)
{
a=line.split(",")[0];
b=line.split(",")[1];
if(map.get(a)!=null)
{ b1= (String) map.get(a);
map.remove(a);
int temp=Integer.parseInt(b)+Integer.parseInt(b1);
String temp1=String.valueOf(temp);
map.put(a, temp1);
}
else
{
map.put(a, b);
}
}
BufferedReader in1 = new BufferedReader(new FileReader("F:\\b.txt"));
while((line=in1.readLine())!=null)
{
a1=line.split(",")[0];
b1=line.split(",")[1];
if(a1.equals("id"))
{
}
else
if(map.get(a1)!=null)
{ b= (String) map.get(a1);
map.remove(a1);
int temp=Integer.parseInt(b1)+Integer.parseInt(b);
// String temp1=String.valueOf(temp);
map.put(a1, temp);
}
else
{
map.put(a1, b1);
}
}
StringBuffer str = new StringBuffer();
FileWriter fw = new FileWriter("F:\\c.txt", true);
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()){
Map.Entry entry = (Map.Entry)iter.next();
str.append(entry.getKey()+" , "+entry.getValue()+"\r\n");
}
fw.write(str.toString());
fw.close();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。