gpt4 book ai didi

java - 更好地组织 Txt 文件中的 ArrayList

转载 作者:行者123 更新时间:2023-12-01 14:27:53 24 4
gpt4 key购买 nike

在我的程序中,我正在读取一个文本文件并创建许多数组列表(8 个或 9 个,具体取决于用户正在查找的内容),这些数组列表将被操纵以查找平均值、峰值和谷值。该文件的设置格式为:

ID 合约日期 开盘价 最低价 收盘量
ID1 合约 1 日期 1 开盘价 1 最高价 1 最低价 1 收盘价 1 成交​​量 1...等等

我通过这样做将它们分成数组列表

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));

是否有更有效或高效的方法来组织此文本文件。它变得非常大,当我试图让我的数学变得更复杂时(比如只使用数组列表的一部分来查找特定时间段的平均值等),我在让我的代码正常工作时遇到了严重的问题。

这个答案没有正确的答案,我只是想看看 Stack Overflow 社区能提供什么。

最佳答案

我的建议是使用面向对象的方法,即创建一个表示文件数据的类,然后根据 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 :

Map<String,Record> recordsMap = new HashMap<String,Record>();

使用从每行读取的正确属性值创建 Record 实例,然后根据需要根据 ID 或其他键存储 Record。

关于java - 更好地组织 Txt 文件中的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17045016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com