首页>代码>java小程序:可扩展可复用的数据分析代码设计(读取数据,分析,输出),研究生作业>/OOP-Experiment-1/src/nv/analyzer/impl/DataSortMethod.java
package nv.analyzer.impl; import nv.analyzer.AnalyzerMethod; import nv.data.DataStore; import nv.data.impl.RowData; import java.text.SimpleDateFormat; import java.util.Comparator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 根据日期排序,设计到196x 年所以无法直接用时间类型比较,需要拆分字符串比较,你自己做把. */ public class DataSortMethod implements AnalyzerMethod { private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/M/d"); private SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); public static final Pattern patten = Pattern.compile("(\\d+)/(\\d+)/(\\d+)"); @Override public DataStore execute(DataStore dataStore) { final List<RowData> datas = dataStore.getDatas(); //简单排序实现,因为年费有196x 年,按照时间排序会造成溢出,所以改为字符串截取判断 datas.sort(new Comparator<RowData>() { @Override public int compare(RowData o1, RowData o2) { String date1 = o1.getValue("Date").replaceAll("-", "/"); String date2 = o2.getValue("Date").replaceAll("-", "/"); int y1 = 0, y2 = 0, m1 = 0, m2 = 0, d1 = 0, d2 = 0; Matcher matcher1 = patten.matcher(date1); while (matcher1.find()) { y1 = Integer.parseInt(matcher1.group(1)); m1 = Integer.parseInt(matcher1.group(2)); d1 = Integer.parseInt(matcher1.group(3)); } Matcher matcher2 = patten.matcher(date2); while (matcher2.find()) { y2 = Integer.parseInt(matcher2.group(1)); m2 = Integer.parseInt(matcher2.group(2)); d2 = Integer.parseInt(matcher2.group(3)); } if (y1 != y2) return y1 - y2; else if (m1 != m2) return m1 - m2; else if (d1 != d2) return d1 - d2; else return -1; } }); return dataStore; } }
最近下载更多
最近浏览更多
uid0901 LV2
4月2日
1195146710 LV4
1月16日
qq1434100519 LV1
2023年11月1日
2017143155 LV12
2023年6月21日
微信网友_6512020493586432 LV2
2023年6月9日
胡明杨
2023年5月4日
暂无贡献等级
guozhihua12 LV3
2023年4月4日
2716804680 LV9
2023年3月23日
科技家 LV2
2023年3月15日
小小虎牙妹 LV4
2023年3月14日