Add File
This commit is contained in:
79
src/main/java/org/dromara/easyai/randomForest/DataTable.java
Normal file
79
src/main/java/org/dromara/easyai/randomForest/DataTable.java
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
package org.dromara.easyai.randomForest;
|
||||||
|
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lidapeng
|
||||||
|
* @description 内存数据表
|
||||||
|
* @date 3:48 下午 2020/2/17
|
||||||
|
*/
|
||||||
|
public class DataTable {//数据表
|
||||||
|
private final Map<String, List<Integer>> table = new HashMap<>();
|
||||||
|
private Set<String> keyType;//表的属性
|
||||||
|
private String key;//最终分类字段
|
||||||
|
private int length;
|
||||||
|
|
||||||
|
public String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLength() {
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSize() {//获取属性的数量
|
||||||
|
return keyType.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, List<Integer>> getTable() {
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getKeyType() {
|
||||||
|
return keyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKey(String key) throws Exception {
|
||||||
|
if (keyType.contains(key)) {
|
||||||
|
this.key = key;
|
||||||
|
} else {
|
||||||
|
throw new Exception("NOT FIND KEY");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataTable(Set<String> key) throws Exception {//表的属性
|
||||||
|
if (key != null) {
|
||||||
|
this.keyType = key;
|
||||||
|
for (String name : key) {
|
||||||
|
if (name == null) {
|
||||||
|
throw new Exception("属性列表中,有一个属性的值为null");
|
||||||
|
}
|
||||||
|
table.put(name, new ArrayList<>());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Exception("属性列表为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void insert(Object ob) {
|
||||||
|
try {
|
||||||
|
Class<?> body = ob.getClass();
|
||||||
|
length++;
|
||||||
|
for (String name : keyType) {
|
||||||
|
String methodName = "get" + name.substring(0, 1).toUpperCase() + name.substring(1);
|
||||||
|
Method method = body.getMethod(methodName);
|
||||||
|
Object dm = method.invoke(ob);
|
||||||
|
List<Integer> list = table.get(name);
|
||||||
|
if (dm instanceof Integer) {//数据表只允许加入Integer类型数据
|
||||||
|
list.add((int) dm);
|
||||||
|
} else {
|
||||||
|
throw new Exception("数据表只允许加入Integer类型数据");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user