1

我正在使用 java 中的实时应用程序,我有一个看起来像这样的数据结构。

HashMap<Integer, Object> myMap;

现在这对于存储我需要的数据非常有效,但它在获取数据时会杀死我。我遇到的根本问题是,如果我打电话

Collection<Object> myObjects = myMap.values();
Iterator<object> it = myObjects.iterator();
while(it.hasNext(){ object o = it.next(); }

我在我的类中将迭代器和集合声明为变量,并在每次迭代时分配它们,但对集合的迭代非常慢。这是一个实时应用程序,因此需要每秒至少迭代 25 次。

查看分析器,我发现每次更新都会创建一个迭代器的新实例。

我正在考虑两种可能更改哈希图以解决我的问题的方法。1. 以某种方式缓存迭代器,虽然我不确定这是否可能。2. 可能更改 hashmap.values() 的返回类型以返回列表而不是集合 3. 使用不同的数据结构,但我不知道我可以使用什么。

4

1 回答 1

0

如果这仍然是开放的,请使用 Google Guava 收藏。对于您正在定义的结构,它们具有诸如 multiMap 之类的东西。好的,这些可能不是完全替代品,但很接近:从这里的网站: https ://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained

每个有经验的 Java 程序员都曾在某一时刻实现过 Map> 或 Map>,并处理了该结构的笨拙问题。例如,Map> 是表示无标签有向图的典型方式。Guava 的 Multimap 框架可以轻松处理从键到多个值的映射。Multimap 是将键与任意多个值相关联的通用方法。

于 2013-03-15T21:23:08.717 回答