- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个网络算法,我应该有一个结构来存储每个节点在每个时钟滴答的位置。由于新节点可以随时加入网络,因此节点数量不是先验知识。此外,时钟滴答集不是先验已知的,并且随着时间的推移添加了新的时钟滴答条目。
要将此信息存储在我的伪代码中,我有两个选择:
使用动态二维数组并具有类似的东西:
array[i][t]=location of node i at time t
使用二维 hashmap 并具有如下内容:
map.set(i,t,location of node i at time t)
其中 i 和 t 都是 HashMap 的键。
但在这两种情况下,我都不知道如何用伪代码遍历结构的所有元素,因为我不知道时钟滴答的范围和节点。我想我可以将添加的每个节点的 ID 和每个时钟滴答存储在两个不同的集合中,但我认为应该有更明智的方法来做到这一点。
所以,如果我使用一个二维数组,我想要这样的东西:
For all i in (set of node IDs for which we have stored locations)
For all t in (set of times for which we have stored locations)
if x < array[i][t] then return true,
如果我使用 HashMap ,
For all i in (set of node IDs for which we have stored locations)
For all t in (set of times for which we have stored locations)
if x < map.get(i,t) then return true,
哪种结构更可取,我怎样才能以一种更明智的方式遍历所有元素,即一种较短的方式,因为我没有太多空间(最好不要添加额外的变量,例如用于存储时钟滴答的两组和节点 ID)并且易于理解?当然,只要可以用简短易懂的伪代码编写,关心内存使用或检索速度的解决方案都是受欢迎的。
最佳答案
首先,有一个滴答时间数组。这为您提供了从连续的整数值“滴答指数”到相应滴答时间的映射。
对于每个节点,存储它们加入网络时的滴答索引。
同样对于每个节点,存储一个位置样本数组,自它们加入以来每个 tick 一个。
(每个节点的信息可以存储在从节点 ID 到节点数据的映射中。)
遍历所有位置样本很简单:只需遍历节点,并针对每个节点遍历其位置样本。节点数组中每个位置样本的位置,再加上节点的基本刻度索引,将使您能够将该位置样本与其对应的刻度时间相关联。
这种方法最大限度地减少了内存使用,避免了哈希表容易出现的内存间接寻址,并允许沿任何维度轻松迭代和查找。
关于algorithm - 在伪代码中使用动态二维数组或 HashMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30513830/
我有不同的结构,它们都包含一个 HashMap与 String作为键,但具有不同的值类型。例如,一个结构有一个类型为 HashMap 的成员, 另一个将有一个 HashMap 类型的成员, 等等。 我
我想制作一个包含学生姓名和科目的板,每个学生在每个科目中都有一个成绩(或者没有..他可以离开考试而不写,然后他的案子将是空的)。我只想使用 HashMap。我的意思是,它会是这样的: HashMap>
是否有内存和速度高效的方法来在 HashMap 中动态存储唯一键:值对? key 保证是唯一的,但它们的数量经常变化。插入和删除必须很快。 我所做的是包含有符号距离场的八叉树(非线性/完整)。八叉树经
有谁知道为什么选择通过 LinkedList 而不是另一个 Hashmap 来实现 HashMap 的存储桶。如果桶本身变成了 HashMap,那么 contains 或 get 的时间复杂度似乎是
我想创建一个具有嵌套结构的 HashMap,就像这个复杂的示例: { type: boy name: Phineas father: type: man
这个问题在这里已经有了答案: How do I create a global, mutable singleton? (7 个答案) 关闭 7 年前。 我想要一个可扩展的字典,将 Object 与
HashMap> hm = new HashMap>(); hm.put("Title1","Key1"); for(int i=0;i hm1 = new H
我必须修改当前代码以适应 Spring MVC。我有 HashMap hashmap = new HashMap(); request.setAttribute("dslrErrors", hashm
我正在尝试进行一些错误捕获。 错误应该检查数组的长度是否小于 2,并检查 HashMap 是否包含用户输入的键。 捕获的错误必须仅使用 if 语句,并且必须使用 .length() 方法,并且必须使用
在 stackoverflow 上提出另一个问题后,(Java- Why this program not throwing concurrent Modification exception)我开始
我有两个类,想使用 org.dozer.Mapper( http://dozer.sourceforge.net/ ) 将 Female 对象的属性映射到 Male 对象。 第一类是: public
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
是否有任何方法可以检查 HashMap 是否包含一组特定的键(这些键是在数组中给出的)。当我尝试类似下面的代码时,它返回 false。 map.containsKey(arrayOf("2018-01
跟进我的问题:How To Access hash maps key when the key is an object 我想尝试这样的事情:webSearchHash.put(xfile.getPa
我有一个可扩展的 ListView ,对于每个 child ,我需要有 4 个“额外”或字符串或其他名称来调用它:- 子标题- 描述- 链接1- 链接2 跟着教程,创建 ListView 、不同的 p
我想确保这是正确的,因为如果不正确,它可能会破坏我的应用程序。 我有这个: private static HashMap> balance = new HashMap<>(); 如果我得到这样的值:
我想做以下事情: 为某个键查找Vec,并将其存储以备后用。 如果它不存在,则为键创建一个空的 Vec,但仍将其保存在变量中。 如何有效地做到这一点?自然地,我认为我可以使用 match: use st
我想做以下事情: 为某个键查找Vec,并将其存储以备后用。 如果它不存在,则为键创建一个空的 Vec,但仍将其保存在变量中。 如何有效地做到这一点?自然地,我认为我可以使用 match: use st
我想做以下事情: 为某个键查找Vec,并将其存储以备后用。 如果它不存在,则为键创建一个空的 Vec,但仍将其保存在变量中。 如何有效地做到这一点?自然地,我认为我可以使用 match: use st
我想做以下事情: 为某个键查找Vec,并将其存储以备后用。 如果它不存在,则为键创建一个空的 Vec,但仍将其保存在变量中。 如何有效地做到这一点?自然地,我认为我可以使用 match: use st
我是一名优秀的程序员,十分优秀!