a.dat文件:
id,money
k001,5
k002,21
k003,30
k004,40
k002,20b.dat文件:
id,money
k002,30
k005,49
k007,50用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件。
求完整代码!跪求!
id,money
k001,5
k002,21
k003,30
k004,40
k002,20b.dat文件:
id,money
k002,30
k005,49
k007,50用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件。
求完整代码!跪求!
解决方案 »
- java数据库中怎么将一个表包装成一个类 (初学java数据库编程)
- 怎么将Java中的.class文件转变成可执行性文件?
- 关于静态代码块的问题
- 有用过jacob的高人吗?调试总有一个小问题,等待高人指教!
- ~~~~~~~~~~~~~~~~~救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救
- jbuilder8 的帮助文件怎么没有了?
- POI能根据数据长度自动设定Excel的列宽么?谢谢
- 寻求complete java 2 certification study guide 的中文版
- java GC 中的GC pass 中的pass是啥意思
- 主方法中 Thread.sleep ,为什么 catch不执行
- 关于Java源码中AbstractCollection中toArray方法的疑惑
- 模拟登录评论,java
/*
a.dat文件:
id,money
k001,5
k002,21
k003,30
k004,40
k002,20b.dat文件:
id,money
k002,30
k005,49
k007,50
*/
import java.util.Scanner;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import java.util.Iterator;
import java.util.Set;import java.io.IOException;
import java.nio.channels.WritableByteChannel;
import static java.nio.file.StandardOpenOption.*;
import java.nio.ByteBuffer;public class Test{
public static void main(String[] args)throws Exception{
Path pathA = Paths.get(System.getProperty("user.dir")).resolve("a.dat");
Path pathB = Paths.get(System.getProperty("user.dir")).resolve("b.dat");
Scanner fileA = new Scanner(pathA);
Scanner fileB = new Scanner(pathB);
HashMap<String,Integer> result = new HashMap<>();
String regex = "^(?<key>k\\d+),(?<value>\\d+)$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = null;
String content,key;
Integer value;
for(;fileA.hasNextLine();){
content = fileA.nextLine();
matcher = pattern.matcher(content);
if(matcher.matches()){
key = matcher.group("key");
value = Integer.valueOf(matcher.group("value"));
if(result.containsKey(key)){
result.put(key,result.get(key) + value);
}else{
result.put(key,value);
}
}
} for(;fileB.hasNextLine();){
content = fileB.nextLine();
matcher = pattern.matcher(content);
if(matcher.matches()){
key = matcher.group("key");
value = Integer.valueOf(matcher.group("value"));
if(result.containsKey(key)){
result.put(key,result.get(key) + value);
}else{
result.put(key,value);
}
}
} Set<String> keySet = result.keySet();
Iterator<String> keys = keySet.iterator();
Path pathC = Paths.get(System.getProperty("user.dir")).resolve("c.dat");
ByteBuffer buffer = null; try(WritableByteChannel channel = Files.newByteChannel(pathC,WRITE,CREATE);){
while(keys.hasNext()){
key = keys.next();
buffer = ByteBuffer.wrap(String.format("%s,%s",key,result.get(key) + System.lineSeparator()).getBytes());
channel.write(buffer);
}
}catch(IOException e){
e.printStackTrace();
}
}
}