我正在编写一个代码,它读取用户输入模型,然后对给定的数据执行数值计算。目前,数据结构被设置为数组。例如,如果用户输入文件指定具有过滤器流量和时间值的单个间隔,则这些值存储在以下数组中:
filter_flow_rate[0]
filter_time[0]如果使用另一个过滤器流量和时间值指定了第二个隔间,则该值存储为:
filter_time[1]
filter_flow_rate[1]也就是说,数组的第一个维度指定间隔号,而数组的名称指定值的类型。我正在改变这个结构。我创建了一个过滤器类,它在读取过滤器时被实例化。我将过滤器实例存储在哈希表中,其中键是隔间号,值是过滤器实例。现在,当我需要filter对象及其字段时,我可以这样找到它们:
filter.get(iCompartment);
double x = filter.flowRate; // example of retrieving flow rate value
double y = filter.time; // example of retrieving time value我更喜欢这种结构,但如果可能的话,我想删除哈希表。最好是创建一个舱室类,在读取一个间隔时实例化它。然后,如果一个过滤器被读入,它可以与该间隔对象相关联,并且可以以这样的方式存储和检索:
compartment.filter.flowRate = ...在这里,间隔实例与过滤器实例相关联,这比使用笨拙的哈希表方法更可取,在这种方法中,密钥位于筛选器对象的位置。问题是我不知道怎么做。是否有一个好的方法来实现类似上述的东西?
发布于 2019-05-09 21:28:36
我会创建一个类,正如您在回答中所建议的那样,您可以这样做:
public class Filter{
double time;
double flowRate;
//constructor
public Filter(double time, double flowRate){
this.time = time;
this.flowRate = flowRate;
}
}根据我在你的解释中所读到的,这个隔间实际上不是一个编号的索引吗?在这种情况下,您可以初始化一个列表,每当读取一个新的列表时,就可以将它添加到列表中,如下所示:
filterList.add(new Filter(x, y)) // your double values would be passed instead of x and y如果隔间实际上也是一种数据类型,那是行不通的。在这种情况下,如果您也可以张贴舱室代码,这将是有帮助的。
https://stackoverflow.com/questions/56067554
复制相似问题