package nv.analyzer.impl;

import nv.analyzer.AnalyzerMethod;
import nv.data.DataStore;
import nv.data.impl.RowData;

import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DataFilterMethod implements AnalyzerMethod {
    @Override
    public DataStore execute(DataStore dataStore) {
        Iterator<RowData> iterator = dataStore.getIterator();
        while (iterator.hasNext()) {
            RowData rowData = iterator.next();
            if (isBad(rowData)) {
                iterator.remove();
            }
        }
        return dataStore;
    }
    
    
    public static final Pattern POSITIVE_FLOAT_PATTERN = Pattern.compile("^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$");
    /**
     * 过滤的列,TODO 去掉了 Volume 因为这类都不是浮点数
     */
    public static final String[] VALIDATE_COLUMN = new String[]{"Open", "High", "Low", "Close", "Adj Close"};
    
    /**
     * 根据条件分析是必须为正浮点数
     * <p>
     * Open	High	Low	Close	Adj Close	Volume, 这4列含有负数、非浮点数、空。
     * 验证是否符合错误数据条件
     */
    private boolean isBad(RowData rowData) {
        
        for (String columnName : VALIDATE_COLUMN) {
            String value = rowData.getValue(columnName);
            Matcher matcher = POSITIVE_FLOAT_PATTERN.matcher(value);
            if (!matcher.matches()) {
                return true;
            }
        }
        
        return false;
    }
  
}
最近下载更多
我家大宝贝  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日
最代码官方  LV167 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  LV1 2023年4月4日
2716804680  LV8 2023年3月23日
科技家  LV2 2023年3月15日
小小虎牙妹  LV4 2023年3月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友