我正在用 java 重新创建类似于 pandas dataframe 的东西来读取 csv 文件和操作数据。我将所有代码都编码为通用的,以处理 csv 文件中的任何类型的列,以及自动声明包装类,例如 Integer 和 Double(如果它是数字)。问题是现在我正在编写只涉及数字列的函数,但我仍然需要进行大量的强制转换以获得实际值,我想找到一个更优雅的解决方案。
我已经尝试在方法中进行强制转换并且它有效但是我正在寻找一种方法来返回数值如果它是列类中的数字以避免为将来的函数这样做:
//the basic structure
public class Column<T> {
public String type; //column type
public String name; //column name
public ArrayList<T> values; //array of values
...
public T getValue(int index) {
return values.get(index);
}
}
//in another file is the problem
public static double variance(Column c) {
double mean = mean(c);
double var = 0;
for(int i = 0;i < c.getLength();i++) {
// here is the problem
var = Math.pow((((Number) c.getValue(i)).doubleValue()-mean),2);
}
return var/c.getLength();
}
跃然一笑
相关分类