我正在尝试创建一个类,它将是一种数据库。 这是代码:
public class DataFrame {
public HashMap<String, ArrayList<?>> data;
public String[] nazwy;
public String[] typy;
public DataFrame(String[] _nazwy, String[] _typy) {
data = new HashMap<String, ArrayList<?>>();
nazwy = new String[_nazwy.length];
typy = new String[_typy.length];
for(int i = 0; i < _nazwy.length; i++) {
nazwy[i] = _nazwy[i];
typy[i] = _typy[i];
ArrayList<?> kolumna = new ArrayList<>();
data.put(_nazwy[i], kolumna);
}
}
public int size() {
return data.size();
}
public ArrayList get(String kolname) {
return data.get(kolname);
}
public DataFrame get(String [] kols, boolean copy) { // shallow and deep
int size = kols.length;
String[] _typy = new String[size]; // naprawic typy
int i = 0;
int j = 0;
for(String kol : kols) {
if(kol == typy[i]) {
_typy[j] += typy[i];
j++;
}
i++;
}
if(copy) {
DataFrame temp = new DataFrame(kols, _typy);
for(String kol : kols) {
if(data.containsKey(kol))
temp.data.put(kol, data.get(kol));
}
return temp;
}
else {
DataFrame temp = new DataFrame(kols, _typy);
for(String kol : kols) {
if(data.containsKey(kol))
temp.data.clone();
}
return temp;
}
}
}
我创建了构造函数,size()和get(column)。运行正常(我已经对其进行了测试)。我还尝试制作一个深层副本,但我认为它可以工作,但是我不知道如何制作仅列出各列的浅层副本。我找到了clone()方法,但它不起作用:(
public DataFrame get(String [] kols, boolean copy) { // shallow and deep
int size = kols.length;
String[] _typy = new String[size]; // naprawic typy
int i = 0;
int j = 0;
for(String kol : kols) {
if(kol == typy[i]) {
_typy[j] += typy[i];
j++;
}
i++;
}
if(copy) {
DataFrame temp = new DataFrame(kols, _typy);
for(String kol : kols) {
temp.data.put(kol, data.get(kol));
}
return temp;
}
else {
DataFrame temp = new DataFrame(kols, _typy);
temp.data = data;
Set<String> set = new HashSet<String>();
for(int k=0; k<kols.length; ++k)
set.add(kols[k]);
temp.data.keySet().retainAll(set);
return temp;
}
}
我是这样的。即时通讯检查对象时,在抄浅中返回false,在进行深部检查时返回true