首页>代码>java小程序:可扩展可复用的数据分析代码设计(读取数据,分析,输出),研究生作业>/OOP-Experiment-1/src/nv/analyzer/impl/DataFilterMethod.java
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;
}
}
最近下载更多
最近浏览更多
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日

