gpt4 book ai didi

java - 寻找 for 循环中动态变量声明的解决方法

转载 作者:行者123 更新时间:2023-12-01 11:05:33 25 4
gpt4 key购买 nike

我想将一个任务多次重复,放入 for 循环中。我必须将时间序列对象存储为 IExchangeItemopenDA 中的一个特殊类(数据同化软件)。

这是任务之一(有效):

HashMap<String, TimeSeries> items = new LinkedHashMap<String, TimeSeries>();
...
TimeSeries tsc1Q = new TimeSeries(time,value);
id = "Q1";
tsc1Q.setId(id);
this.items.put(id,tsc1Q);
IExchangeItem c1Q = new TimeSeries(tsc1Q);

任务之间的变化是 id时间序列对象的名称和 IExchangeItem 的名称。我必须创建一个新的 IExchangeItem每个时间序列的对象。

这是我在 for 循环中尝试的:

HashMap<String, TimeSeries> items = new LinkedHashMap<String, TimeSeries>();
...
TimeSeries temp;
for (int i = 0; i<readDataDim[0]; i++) {
value[0] = values[i];
id = exchangeItemIDs[i];
temp = new TimeSeries(time,value);
temp.setId(id);
this.items.put(id,temp);
IExchangeItem <??> = new TimeSeries(temp); //* How can I handle this line?
}

我知道我不能在 java 中使用动态变量名,并且通常使用数组、列表或映射来解决此问题(这就是我在上面的代码片段中使用 <??> 的原因。但是,我是对于java相对初学者,我不知道如何解决这个特定问题,因为我必须为每个时间序列重新调用IExchangeItem

来自here我认为我的IExchangeItem在 for 循环中创建的内容将无法在 for 循环之外访问,所以我如何初始化 n IExchangeItem 的重复在 for 循环之外?

编辑:是否有HashMap创建n IExchangeItem 的实例如果我尝试这样的事情?

HashMap<String,IExchangeItem> list = new LinkedHashMap<String,IExchangeItem>();

最佳答案

只有一个建议,当您可以传递数组的大小或固定数字(基于数组)时,尝试编写一个单独的方法,然后创建一个 hashMap 并添加那么多数量的实例及其键和值,无法将其作为评论发布,因此无法将其作为答案发布。

尝试使用 readDataDim[0] 值创建一个新方法,

public Map<String, IExchangeItem>  createAndInitialzeMap(int maxValue) {
Map<String, IExchangeItem> map = new HashMap<>();
String temp = "tempName";
for(int i =0; i < maxValue ; i ++ ) {
map.put(temp+i, new IExchangeItem());
}
return map;
}

通过这种方式返回,您可以初始化 map 及其变量名称,并且可以在应用程序中的任何位置使用它。不过,如果这样的代码存在并且时间允许,我会考虑重构。

您还应该阅读有关 hashMap 的另一件事。 :) :)

关于java - 寻找 for 循环中动态变量声明的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992988/

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