Java HashMap迭代查找驱动结束事件

时间:2016-04-26 16:36:36

标签: java android hashmap

我正在开展一个项目,我必须确定一个驾驶事件何时结束。一个函数给出一个HashMap<Date, Integer>,包含车辆/步行的置信水平,以及百分比时间戳的百分比形式。

我正在尝试迭代此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

1 个答案:

答案 0 :(得分:1)

这只是部分答案。

您在问题中提到过“循环HashMap {...}”,但您只能循环遍历hashmap的键。 (或使用.values()

的值

获取HashMap<Date, Integer>的键:

Set<Date> dates_unordered = my_hashmap.keySet ();

Set是无序的,为了命令它使用像this one这样的函数来创建一个有序列表。 (“Date”类实现了“Comparable”接口,该接口是该分类工作所必需的)

List<Date> dates_ordered = asSortedList (dates_unordered);

迭代列表。

Iterator<Date> it = dates_ordered.iterator (); // create an iterator object
while (it.hasNext ())
{
  Date d = it.next ();
  Integer i = my_hashmap.get (d); // access value in hashmap with this key

  // do something with "i" here
  // ...
}