【发布时间】:2016-08-20 15:05:49
【问题描述】:
我正在开展一个项目,我必须确定驾驶活动何时结束。一个函数被赋予一个HashMap<Date, Integer>,其中包含在车辆/步行中的置信水平,以百分比的形式与一个 unix 时间戳一起。
我正在尝试迭代这个 HashMap,确定一个驱动事件是否已经结束。
我是一名 PHP 开发人员,使用这样的 Java 逻辑是一个真正的挑战,我正在努力实现应该简单的事情。任何帮助表示赞赏。
这是我要实现的逻辑:
If
we have at least 1 minute worth of data with 10 items in our HashMap
then
loop HashMap
if past 30 seconds of time, from 30 seconds ago contain driving data of 60% confidence adverage or above then
AND past 30 seconds of time from now contains working data with average 60% confidence or above
then
mark isDriving as true
if isDriving == true
then
doSomething()`
我的 HashMap 看起来像这样:
private HashMap mActivityData = new HashMap<String, Long>();
mActivityData.putExtra("in_vehicle",80); // % confidence
mActivityData.putExtra("on_foot",10); // % confidence
mActivityData.putExtra("time",1461684458); // unix time stamp
【问题讨论】:
-
正确使用泛型,例如对于显示的数据:
private HashMap<String, Long> mActivityData = new HashMap<>(); -
实际上,如果值是不同的类型(% 与时间戳),则 Map 在这里看起来不正确。假设您不需要动态创建新密钥,只需使用三个正确类型的变量:
double in_vehicle; double on_foot; Date time;。 -
您的问题到底是什么?您尝试过什么,哪里失败了?
-
HashMap 似乎没有 putExtra() 方法。 . .只有 put() 和 putAll()
-
这似乎是一个真正的
hashmap,因为这里不是最好的解决方案。您的地图代表了更多的对象关系模型。为什么不创建一个名为Activity的类来保存置信度和时间戳的变量。如果每个活动需要多个,这可以是一个列表。