在java中维护插入顺序的地图(集合)

时间:2012-03-04 06:20:23

标签: java android collections

我需要在Java中使用Maps for Android应用程序。但问题是列表会自动排序。如何使用Maps以与插入数据相同的顺序获取数据。

5 个答案:

答案 0 :(得分:19)

您应该LinkedHashMap用于此目的。有关详细信息,请访问Android DocsJava Docs

答案 1 :(得分:5)

LinkedHashMap维持广告订单。

答案 2 :(得分:2)

LinkedHashMap将使数据保持与插入时相同的顺序。

答案 3 :(得分:2)

正如您和我所发现的,LinkedHashMap并不是非常有用。 (无论如何,它的存在意义何在?)

我有一个哈希表(从语义上来说,我认为它本应被称为散列表)

http://code.google.com/p/synthfuljava/source/browse/trunk/gwt/util/org/synthful/gwt/util/HashList.java

它有一个arraylist和一个hashmap。 arraylist存储密钥。

hashlist.put(key,value)将执行

  • map.put(键,值)
  • 以及list.add(键)

hashlist.get(int position)将执行 - map.get(list.get(position))

这是我在2003年写的HashVector和HashTree类的简化,当时我需要用Java建模javascript和xml对象,保留它们的顺序。但是,我没有找到时间或必要性来简化gwt可序列化的哈希树。

再想一想,GWT如何实现一个hashmap?我想当我有时间时,我需要用faststringmap替换hashmap。 Google的faststringmap不公开。它适用于GWT编译器的私人使用。因此,您必须复制其代码并将其更改为公共类:http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/client/ui/FastStringMap.java

http://jectbd.com/?p=95

可能是,GWT编译器无论如何都会默默地使用它 - 我是否需要使用faststringmap对编译器替换hashmap进行微观管理?

顺便说一句,

你仍然可以通过谷歌搜索" googlecode synthful hashtree"来寻找哈希树。

Hashtree允许您创建一个对象树,并允许您使用像路径一样的点约定xpath来检索对象。

hashtree.get("hello.dolly.how.are.you");

可以重新指定分隔符,以便您可以存储或使用

hashtree.get("hello/dolly/how/are/you");
hashtree.put("hello/dolly/how/are/you", value);

答案 4 :(得分:1)

相关问题