java - 在 Java 中的 Hashmap 中使用过去的数据和 ArrayList 的当前数据

标签 java android arraylist hashmap

来自三个传感器(x、y 和 z)的连续数据存储在 Hashmap 中(传感器名称为 Key,ArrayList 中的数据为 value)。对于来自每个传感器的数据,我需要应用低通滤波器。我试图通过以下方式做到这一点:

    ArrayList<Float> TempArray = new ArrayList();
    Map<String,ArrayList<Float>> FilteredDataOfSensors = new HashMap<String, ArrayList<Float>>();
    float filteredData;
    for(Map.Entry<String , ArrayList<Float>>Sensors:ContinuousDataFromSensors.entrySet())
    {
        TempArray = AccessPointId.getValue();
        String SensorName = Sensors.getKey();
        ArrayList<Float> arrayOfFilteredData = FilteredDataOfSensors.get(SensorName);
        if(arrayOfFilteredData == null)
        {
            arrayOfFilteredData = new ArrayList<Float>();
            FilteredDataOfSensors.put(SensorName,arrayOfFilteredData);
        }
        if(arrayOfFilteredData.size() == 0 && TempArray.size() == 1) {filteredData = TempArray.get(0); Log.d("Test", "Inside If");}
        else if(arrayOfFilteredData.size() == 0 && TempArray.size() > 1) {filteredData = TempArray.get(TempArray.size()-1);Log.d("Test", "Inside else If");}
      else {  FilteredData = (float) (0.5 * TempArray.get(TempArray.size()-1) + 0.5 * arrayOfFilteredData.get(arrayOfFilteredData.size()-1)); Log.d("Test", "Inside else");}
        arrayOfFilteredData.add( FilteredData);     
    }

在运行上面的代码 fragment 时,循环永远不会进入 else 条件。

在我的例子中,当应用程序启动时,它可能不会在开始时从所有传感器获取数据。当每个传感器至少有一个数据时,上面的代码 fragment 开始。因此,当代码开始时,可​​能有很多数据来自一个传感器,而只有一个数据来自另一个传感器。我需要使用过去的数据和当前的数据来过滤传感器数据。

HashMap ContinuousDataFromSensors 包含原始数据(Key:传感器名称,Value:ArrayList)

我的方法正确吗?

谢谢。

最佳答案

在循环运行之前创建 FilteredDataOfSensors 的方式可能是您的问题。也许它需要提升为类成员并持久化并在循环的多次运行中重复使用。

因为您询问的 else 代码仅在 FilteredDataOfSensors 中已存在 Sensor.getKey() 时运行。但是 FilteredDataOfSensors 刚刚创建,因此在循环开始时它始终为空。

也许如果代码循环的 ContinuousDataFromSensors 具有给定 Sensor.getKey() 的多个条目。但这似乎不太可能,因为大多数 map 都使用唯一键。而且由于传感器的多个数据点不会进入多个 map 条目,它们都在一个 map 条目的 ArrayList 中)

顺便说一下,感谢您将代码 fragment 与您的问题放在一起。放置完整的方法或类可以更轻松地提供帮助。祝你好运!

关于java - 在 Java 中的 Hashmap 中使用过去的数据和 ArrayList 的当前数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666582/

相关文章:

android - setRetainInstance(true) 不持久化Fragment的成员变量

java - 为什么此方法不从数组中删除元素

java - Tomcat 7 : How do I specify Database resource when making connection to Microsoft Access

java.text.ParseException : Unparseable date: "Thu Jan 19 2012 08:00 PM" 异常

android - okHTTP 在使用 HttpUrlConnection 时在 Android 设备 >4.4 上内部使用?

android - 使用 Signature Android glide 查找缓存图像

java - ArrayList 的排序

java - 从 ArrayList 中删除所有重复的元素

java - 为什么我的 switch 语句会出现这种奇怪的行为?

java - MongoDB Morphia 仅保存 1 个用户