首页>代码>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
2024年4月2日
1195146710 LV4
2024年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日

