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;
    }
    
    
}
最近下载更多
我家大宝贝  LV4 2021年6月10日
130duyu  LV7 2020年2月25日
wzzyy12  LV2 2019年12月18日
ml2103  LV5 2019年9月28日
星河远望  LV3 2019年5月9日
liuyishi  LV6 2019年4月6日
ZeroCaiNiao  LV2 2018年12月25日
gygygy51  LV2 2018年3月15日
最代码官方  LV168 2017年10月25日
最近浏览更多
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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友