HashMap数据总是有新数据

时间:2015-12-14 13:22:06

标签: 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 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


}

methodIdent1的值每次都不同,但sensorTypeIdent始终相同。截至目前的日志是 -

methodinvoc{720.342=com.hi.TimerData@26621ad4}
methodinvoc{2016.342=com.hi.TimerData@7c7b512c, 720.342=com.hi.TimerData@26621ad4}

正如您在上面的日志中看到的那样,旧数据也被添加到我不想要的新数据中。我需要这样的日志 -

methodinvoc{720.342=com.hi.TimerData@26621ad4}
methodinvoc{2016.342=com.hi.TimerData@7c7b512c}

我不希望以前的数据与新数据一起出现。我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果您希望每次调用addMethodSensorData时清除地图,请添加

sensorData.clear();

在该方法的开头。

public void addMethodSensorData(long sensorTypeIdent, long methodIdent1, String prefix, MethodSensorData methodSensorData) {
    sensorData.clear();
    StringBuffer buffer = new StringBuffer();
    ...
}

或者,如果您只在该方法中使用Map,请将sensorData设为该方法的局部变量。