如何从它们插入哈希图中的顺序打印哈希图值

Posted

技术标签:

【中文标题】如何从它们插入哈希图中的顺序打印哈希图值【英文标题】:How to print the hashmap values from the order they inserted into the hashmap 【发布时间】:2012-08-14 16:46:12 【问题描述】:

我有一个以字符串为键和值的 HashMap,

HashMap dataSet = new HashMap();

dataSet.put("A1", "Aania");
dataSet.put("X1", "Abatha");
dataSet.put("C1", "Acathan");
dataSet.put("S1", "Adreenas");

我想按插入HashMap的顺序打印,所以输出应该是这样的,

A1, Aania
X1, Abatha
C1, Acathan
S1, Adreenas  

谁能告诉我怎么做?

【问题讨论】:

【参考方案1】:

您可以改用LinkedHashMap,这将保留插入顺序。标准的HashMap 无法满足您的要求。

此实现与 HashMap 的不同之处在于,它维护一个双向链表,贯穿其所有条目。这个链表定义了迭代顺序,通常是键插入映射的顺序(插入顺序)。

所以你的代码的第一行会变成:

Map dataSet = new LinkedHashMap();

您可能还希望添加泛型作为一种良好做法:

Map<String, String> dataSet = new LinkedHashMap<String, String>();

【讨论】:

你能告诉我如何使用LinkedHashMap和打印数据吗?使用 LinkedHashMap 代替 HashMap 不是问题。如果它可以工作,我可以使用 LinkedHashMap @Roshanck 我添加了一些代码。您可以打印地图:System.out.println(dataSet); 您能否提供一个示例,说明如何按插入顺序从 LinkedHashMap 中检索键和值? Println 只会使用 toString ,这在您需要处理数据时无济于事。【参考方案2】:

你不能一个哈希图没有内部顺序

您将不得不使用 Map 的另一个实现

【讨论】:

您忘记提及 要使用哪个 Map 的其他实现。

以上是关于如何从它们插入哈希图中的顺序打印哈希图值的主要内容,如果未能解决你的问题,请参考以下文章

如何“忽略”哈希图的模板参数?

哈希图共识算法

如何在哈希图中动态推送交易?

C ++中的简单哈希图实现

树图还是哈希图? [复制]

使用哈希图时,文本文件中的内容会重新排列[重复]