【问题标题】:Java HashMap iteration to find driving end eventJava HashMap 迭代以查找驱动结束事件
【发布时间】: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&lt;String, Long&gt; mActivityData = new HashMap&lt;&gt;();
  • 实际上,如果值是不同的类型(% 与时间戳),则 Map 在这里看起来不正确。假设您不需要动态创建新密钥,只需使用三个正确类型的变量:double in_vehicle; double on_foot; Date time;
  • 您的问题到底是什么?您尝试过什么,哪里失败了?
  • HashMap 似乎没有 putExtra() 方法。 . .只有 put() 和 putAll()
  • 这似乎是一个真正的hashmap,因为这里不是最好的解决方案。您的地图代表了更多的对象关系模型。为什么不创建一个名为Activity 的类来保存置信度和时间戳的变量。如果每个活动需要多个,这可以是一个列表。

标签: java android hashmap


【解决方案1】:

这只是部分答案。

您在问题中提到了“loop HashMap { ... }”,但您只能遍历哈希图的键。 (或超过.values() 的值)

获取HashMap&lt;Date, Integer&gt;的密钥:

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
  // ...
}

【讨论】:

  • 太好了,解决了我的问题。感谢您的精彩解释。
猜你喜欢
  • 2015-09-19
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
相关资源
最近更新 更多