在我的程序中,我正在阅读一个文本文件并制作许多arraylists(8或9,取决于用户正在寻找的东西),将被操纵以查找平均值,峰值和谷值。该文件的格式为:
ID合约日期开盘高低收盘量
ID1 Contract1 Date1 Open1 High1 Low1 Close1 Volume1
......等等
通过这样做,我把它们分成了arraylists
ArrayList<Double> list = new ArrayList<Double>();
while (scanDaily.hasNext())
{ //while
double value = scanDaily.nextDouble();
DecimalFormat df = new DecimalFormat("#.#####");
df.format(value);
list.add(value);
} //while
for (int c1 = 0; c1 < list.size(); c1++)
{ //for
counter1++;
if (counter1 % rows ==1)
ID.add(list.get(c1));
else if (counter1 % rows ==2)
Contract.add(list.get(c1));
else if (counter1 % rows == 3)
Date.add(list.get(c1));
else if (counter1 % rows == 4)
Open.add(list.get(c1));
else if (counter1 % rows == 5)
High.add(list.get(c1));
else if (counter1 % rows == 6)
Low.add(list.get(c1));
else if (counter1 % rows == 7)
Close.add(list.get(c1));
else if (counter1 % rows == 8)
Volume.add(list.get(c1));
是否有更有效或更有效的方法来组织此文本文件。它变得非常大,因为我试图让我的数学变得更复杂(比如只使用部分arraylists来找到平均值等等)我遇到了严重的问题让我的代码工作。
这个答案没有正确答案,我只是想看看Stack Overflow社区提供了什么。
答案 0 :(得分:1)
我的建议是使用面向对象的方法,即创建一个表示文件数据的类,然后将该类的对象存储在针对ID属性的hashmap中。它将帮助您在可读性和简单性方面对代码进行大量组织。
这就是你的记录类的样子,我不知道文件中的不同属性,所以我认为它们中的大部分都是字符串。您可以根据需要更改类型:
class Record {
String ID;
String contract;
Date date;
String open;
String high;
String close;
List<String> volumes;
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getContract() {
return contract;
}
public void setContract(String contract) {
this.contract = contract;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getOpen() {
return open;
}
public void setOpen(String open) {
this.open = open;
}
public String getHigh() {
return high;
}
public void setHigh(String high) {
this.high = high;
}
public String getClose() {
return close;
}
public void setClose(String close) {
this.close = close;
}
public List<String> getVolumes() {
return volumes;
}
public void setVolumes(List<String> volumes) {
this.volumes = volumes;
}
}
像这样定义您的地图:
Map<String,Record> recordsMap = new HashMap<String,Record>();
创建具有从每行读取的适当属性值的记录实例,然后根据需要存储记录对ID或其他键。