package lastkilometer.readCSV; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; public class ReadResults_cache extends BasicClass{ /** * 读取结果文件 * * @throws IOException */ public Map<String, List<List<List<Object>>>> readResultsFile() throws IOException { Map<String, List<List<List<Object>>>> post_res=new TreeMap<>(); // 将结果存入集合中 BufferedReader br = read("results_cache/post_last.csv"); String line = null; List<String> list_zhen = new ArrayList<>();//统计小路径的取得的订单数 List<List<Object>> list_two=new ArrayList<>(); while ((line = br.readLine()) != null) { String[] res = line.split(","); String Courier_id=res[0]; String Addr = res[1]; int arrTime = Integer.parseInt(res[2]); int endTime = Integer.parseInt(res[3]); int Amount = Integer.parseInt(res[4]); String Order_id = res[5]; List<Object> list_three = new ArrayList<>(); list_three.add(Addr); list_three.add(arrTime); list_three.add(endTime); list_three.add(Amount); list_three.add(Order_id); list_two.add(list_three); if(Amount>0){ list_zhen.add(Order_id); }else{ list_zhen.remove(list_zhen.indexOf(Order_id)); } if(list_zhen.isEmpty()){//为空,表示一个小路径的结束 boolean bool=true; for(List<Object> list_three_cahce:list_two){ int arrTime_cache = (int) list_three_cahce.get(1); int endTime_cache = (int) list_three_cahce.get(2); //100---50 if((endTime_cache-arrTime_cache)>100){ bool=false; } } int last_Amount=(int) list_two.get(list_two.size()-1).get(3); int last_last_Amount=(int) list_two.get(list_two.size()-2).get(3); if(last_Amount>0&&last_last_Amount<0){ int last_arrTime=(int) list_two.get(list_two.size()-1).get(1); int last_last_endTime=(int) list_two.get(list_two.size()-2).get(2); if((last_arrTime-last_last_endTime)>10){ bool=false; } } // //去掉最后一个endTime时间少于指定时间的小路径 // int last_endTime=(int) list_two.get(list_two.size()-1).get(2); // if(last_endTime>12*10&&last_endTime<20*60){ // bool=false; // } if(bool){ if(post_res.containsKey(Courier_id)){ List<List<List<Object>>> list_one = post_res.get(Courier_id); list_one.add(list_two); post_res.put(Courier_id, list_one); }else{ List<List<List<Object>>> list_one = new ArrayList<>(); list_one.add(list_two); post_res.put(Courier_id, list_one); } } list_two=new ArrayList<>(); } } System.out.println("post_res.size():"+post_res.size()); return post_res; } // /** // * 读取结果文件 // * // * @throws IOException // */ // public List<List<List<Object>>> readResultsFile() throws IOException { // // List<String> unSet=new ArrayList<>(); // // List<List<List<Object>>> post_res = new ArrayList<>(); // // 将结果存入集合中 // BufferedReader br = read("results_cache/post_last.csv"); // String line = null; // List<String> list_zhen = new ArrayList<>();//统计小路径的取得的订单数 // List<List<Object>> list_one=new ArrayList<>(); // while ((line = br.readLine()) != null) { // String[] res = line.split(","); // String Addr = res[1]; // int arrTime = Integer.parseInt(res[2]); // int endTime = Integer.parseInt(res[3]); // int Amount = Integer.parseInt(res[4]); // String Order_id = res[5]; // // // List<Object> list_two = new ArrayList<>(); // list_two.add(Addr); // list_two.add(arrTime); // list_two.add(endTime); // list_two.add(Amount); // list_two.add(Order_id); // // // // if(Amount>0){ // if((endTime-arrTime)!=0){ // unSet.add(Order_id); // }else{ // list_one.add(list_two); // } // list_zhen.add(Order_id); // }else{ // if(!unSet.contains(Order_id)){ // list_one.add(list_two); // } // list_zhen.remove(list_zhen.indexOf(Order_id)); // } // if(list_zhen.isEmpty()){//为空,表示一个小路径的结束 //// boolean bool=true; //// for(List<Object> list_two_cahce:list_one){ //// int arrTime_cache = (int) list_two_cahce.get(1); //// int endTime_cache = (int) list_two_cahce.get(2); //// if((endTime_cache-arrTime_cache)>100){ //// bool=false; //// } //// } //// if(bool){ //// post_res.add(list_one); //// } // if(!list_one.isEmpty()){ // post_res.add(list_one); // } // list_one=new ArrayList<>(); // } // } // return post_res; // } /** * 读取results_cache数据 * @throws IOException * */ public Map<String, List<List<Object>>> readResults_cahce() throws IOException{ Map<String, List<List<Object>>> post_res=new TreeMap<>(); // 获取xml文件名 String[] names = getFileName("results_cache/"); for (String name : names) { //读取数据 BufferedReader br=read("results_cache/"+name); String line=null; while((line=br.readLine())!=null){ String[] res=line.split(","); String Courier_id=res[0]; String Addr = res[1]; int arrTime = Integer.parseInt(res[2]); int endTime = Integer.parseInt(res[3]); int Amount = Integer.parseInt(res[4]); String Order_id = res[5]; if(post_res.containsKey(Courier_id)){ List<List<Object>> listFirst=post_res.get(Courier_id); List<Object> listSecond=new ArrayList<>(); listSecond.add(Addr); listSecond.add(arrTime); listSecond.add(endTime); listSecond.add(Amount); listSecond.add(Order_id); listFirst.add(listSecond); post_res.put(Courier_id, listFirst); }else{ List<List<Object>> listFirst=new ArrayList<>(); List<Object> listSecond=new ArrayList<>(); listSecond.add(Addr); listSecond.add(arrTime); listSecond.add(endTime); listSecond.add(Amount); listSecond.add(Order_id); listFirst.add(listSecond); post_res.put(Courier_id, listFirst); } } br.close(); //关闭InputStreamReader流 close(); } return post_res; } }