相同坐标信息的统计----AIS信息统计
2016-04-28 16:50
453 查看
import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Created by lwc on 4/27/16. */ public class AisCount { public static void main(String[] args) throws Exception{ //inFile: 输入文件的路径+名称,可以为相对路径也可以为绝对路径 //outFIle: 输出文件的路径+名称,同上 String inFile = "1"; String outFile = "outFIle"; countAis(inFile, outFile); } public static void countAis(String inFile, String outFile) throws Exception{ int initLines = 100000; HashMap<Point, Pollution> resultHashMap = new HashMap<>(initLines); File inputFile = new File(inFile); if(!inputFile.exists() || inputFile.isDirectory()) { System.out.println("Error input File"); System.exit(-1); } BufferedReader br = new BufferedReader(new FileReader(inputFile)); String line = br.readLine(); while (line != null) { String[] parts = line.split(","); if(parts.length == 9) { Point point = new Point(Integer.valueOf(parts[1]), Integer.valueOf(parts[2])); Pollution pollution = new Pollution(Double.valueOf(parts[3]),Double.valueOf(parts[4]),Double.valueOf(parts[5]),Double.valueOf(parts[6]),Double.valueOf(parts[7])); System.out.println("insert : " + point + "" + pollution); if(resultHashMap.containsKey(point)) { resultHashMap.put(point, resultHashMap.get(point).add(pollution)); } else { resultHashMap.put(point, pollution); } } line = br.readLine(); } try{} finally { br.close(); } File outputFile = new File(outFile); if(outputFile.exists()) { outputFile.delete(); System.out.println("Delete old file"); } BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile)); Iterator iterator = resultHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); Point point = (Point) entry.getKey(); Pollution pollution = (Pollution) entry.getValue(); System.out.println("Write : " + point + "" + pollution + "\r\n"); bw.write(point + "" + pollution + "\r\n"); } try{} finally { bw.close(); } } } class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } @Override public String toString() { return x + "\t" + y + "\t"; } @Override public int hashCode() { int result = x; result = 31 * result + y; return result; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Point point = (Point) o; if (x != point.x) return false; return y == point.y; } } class Pollution { private double co2; private double co; private double so2; private double nox; private double pm; public Pollution(double co2, double co, double so2, double nox, double pm) { this.co2 = co2; this.co = co; this.so2 = so2; this.nox = nox; this.pm = pm; } public Pollution add(Pollution pollution) { if(pollution != null && pollution instanceof Pollution) { return new Pollution(pollution.co2 + this.co2, pollution.co + this.co, pollution.so2 + this.so2, pollution.nox + this.nox, pollution.pm + this.pm); } else { return this; } } @Override public String toString() { return co2 + "\t" + co +"\t" + so2 +"\t" + nox + "\t" + pm + "\t"; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树