Java HashMap数据始终具有新数据
我在一个方法中有一个并发hashmap,该方法持续不断地获取数据。我需要将此数据连续发送到服务器。hashmap是这样的-Java HashMap数据始终具有新数据,java,android,hashmap,Java,Android,Hashmap,我在一个方法中有一个并发hashmap,该方法持续不断地获取数据。我需要将此数据连续发送到服务器。hashmap是这样的- private Map<String, DefaultData> sensorData = new ConcurrentHashMap<String, DefaultData>(); //This is my method for taking data public void addMethodSensorData(long sensorType
private Map<String, DefaultData> sensorData = new ConcurrentHashMap<String, DefaultData>();
//This is my method for taking data
public void addMethodSensorData(long sensorTypeIdent, long methodIdent1, String prefix, MethodSensorData methodSensorData) {
StringBuffer buffer = new StringBuffer();
if (null != prefix) {
buffer.append(prefix);
buffer.append('.');
}
buffer.append(methodIdent1);
buffer.append('.');
buffer.append(sensorTypeIdent);
sensorData.put(buffer.toString(), methodSensorData);
Log.d("hi", "methodinvoc" + sensorData);
//Methods
List<DefaultData> tempList2 = new ArrayList<DefaultData>(sensorData.values());
Log.d("hi", "tempList2" + tempList2);
kry1.sendDataObjects(tempList2);//Data sent to server
}
methodinvoc{720.342=com.hi.TimerData@26621ad4}
methodinvoc{2016.342=com.hi.TimerData@7c7b512c}
正如您在上面的日志中看到的,旧数据也被添加到我不想要的新数据中。我需要这样的日志-
private Map<String, DefaultData> sensorData = new ConcurrentHashMap<String, DefaultData>();
//This is my method for taking data
public void addMethodSensorData(long sensorTypeIdent, long methodIdent1, String prefix, MethodSensorData methodSensorData) {
StringBuffer buffer = new StringBuffer();
if (null != prefix) {
buffer.append(prefix);
buffer.append('.');
}
buffer.append(methodIdent1);
buffer.append('.');
buffer.append(sensorTypeIdent);
sensorData.put(buffer.toString(), methodSensorData);
Log.d("hi", "methodinvoc" + sensorData);
//Methods
List<DefaultData> tempList2 = new ArrayList<DefaultData>(sensorData.values());
Log.d("hi", "tempList2" + tempList2);
kry1.sendDataObjects(tempList2);//Data sent to server
}
methodinvoc{720.342=com.hi.TimerData@26621ad4}
methodinvoc{2016.342=com.hi.TimerData@7c7b512c}
我不希望以前的数据与新数据一起出现。如何实现这一点?如果希望在每次调用
addMethodSensorData
时清除映射,请添加
sensorData.clear();
在这个方法的开始
public void addMethodSensorData(long sensorTypeIdent, long methodIdent1, String prefix, MethodSensorData methodSensorData) {
sensorData.clear();
StringBuffer buffer = new StringBuffer();
...
}
或者,如果您仅在该方法中使用该映射,请将该方法的局部变量设置为
sensorData
。如果映射中始终只有一项,为什么要使用该映射?调用sensorData=new ConcurrentHashMap()
而不是sensorData.clear()
在发送到服务器后在函数内执行一次。我使用MAP是因为buffer.toString()总是不同的,methodSensorData值也是不同的值
public void addMethodSensorData(long sensorTypeIdent, long methodIdent1, String prefix, MethodSensorData methodSensorData) {
sensorData.clear();
StringBuffer buffer = new StringBuffer();
...
}