【发布时间】:2015-10-08 12:27:48
【问题描述】:
我想在 for 循环中执行多次重复的任务。我必须将时间序列对象存储为IExchangeItem,这是openDA(数据同化软件)中的一个特殊类。
这是其中一项任务(有效):
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 中使用动态变量名,并且通常使用数组、列表或映射来解决这个问题(这就是我在上面的代码 sn-p 中使用 <??> 的原因。但是,我我是 java 的相对初学者,我不知道如何解决这个特定问题,因为我必须为每个时间序列重新调用 IExchangeItem。
来自here,我认为我在 for 循环中创建的 IExchangeItem 在 for 循环之外无法访问,那么我如何在 for 循环之外初始化 IExchangeItem 的 n 复制?
编辑:
如果我尝试这样的事情,HashMap 是否会创建 n 的 IExchangeItem 实例?
HashMap<String,IExchangeItem> list = new LinkedHashMap<String,IExchangeItem>();
【问题讨论】:
-
不能有 IExchangeItem 数组或列表吗?
-
@zubergu 这个列表会创建
n的IExchangeItems 实例吗?问题是IExchangeItem是某种全局类(我不得不承认我不了解每一个细节......)如果我将它们存储在列表中,我不确定我是否可以访问这些IExchangeItems.那么它们可能对其余代码不可见,或者它们是? -
IExchangeItem 在哪里使用?
-
在我定义它的类之外的不同类中。
-
从哪里填充 readDataDim[]?
标签: java