我需要能够存储来自生产机器的传入数据以对其进行一些计算。我从API接收数据,看起来像这样:
[
{
"datasetId":23
"timestamp":1538125706336,
"machineData":[
{
"machineId":<UUID>,
"type":"PLASTIC_INJECTOR",
"data":[
"temperature":30,
"pressure":32
]
},
...
]
},
...
]
machineData数组包含多种不同类型的计算机,它们会发出不同的测量结果。一些有温度,其他有例如“消耗的水量”。另外,由于维护等原因,某些计算机处于脱机状态,因此阵列并不总是包含同一台计算机。我的问题是如何将这些信息存储在对象中。
我的想法是这样的:
public class MachineData{
private long datasetId,
private long timestamp;
private Map<UUID, MachineDataEntry> dataPerMachine;
}
public class MachineDataEntry{
private Map<String, float> measurements;
}
因此MachineDataEntry代表“ machineData”中每台计算机的“ data”数组的内容。
我对其进行了测试,并且可以在开发中使用,但是我担心,一旦我需要处理超过10000个条目的API响应,我可能会遇到性能问题。
还有其他更聪明的方法吗?
答案 0 :(得分:0)
地图非常快。唯一的事情是您可能想选择HashMap
或TreeMap
。 HashMap
更加节省时间(O(1)个操作),TreeMap
更加节省空间(不进行哈希处理,但是O(log(n))个操作)。
This问题有点相关。当您快速向HashMap
添加很多元素时,可能需要重新整理很多东西,这会降低性能,但是如果您期望的话,可以通过在初始化时设置大容量(或容量增量)来修复它很多条目。