将 HashMap 转换为具有相同排序的 ArrayList [重复]

Posted

技术标签:

【中文标题】将 HashMap 转换为具有相同排序的 ArrayList [重复]【英文标题】:Convert HashMap to ArrayList with identical sort [duplicate] 【发布时间】:2019-03-02 16:38:53 【问题描述】:

我有以下问题:我有一个 HashMap

HashMap <String, BeanRelEstatisticaMateriaPrima> dataBeanList = new HashMap ();

我正在生成一个 iReport 报告,但要将数据发送到报告,我将 HashMap 转换为 ArrayList:

List <BeanRelEstatisticaMateriaPrima> test = new ArrayList <BeanRelEstatisticaMateriaPrima> (dataBeanList.values ());

JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource (test);

但在进行这种转变时,圣职就失去了。在哈希图中,我按字母顺序排列,例如: (A, B, C, D, E) 但在 ArrayList 中得到 (D, A, E, C, B)

有没有办法通过保持与HashMap完全相同的排序顺序来转换为ArrayList?

【问题讨论】:

“在哈希图中我按字母顺序排列”我不相信你会这样做。 Hashmaps 没有排序保证。也许您按该顺序插入它们;但是,它们将按迭代顺序插入到列表中。 尝试使用 LinkedHashMap,而不是 hashMap。 TreeMap 也保留插入顺序。 @gawi 不,它没有。它根据自然顺序或提供的比较器进行排序。 你可能是对的,我用它来确定顺序,但从来没有注意它是否是插入顺序,谢谢指出 【参考方案1】:

HashMap 不保证顺序。如果要保留插入顺序,请使用 LinkedHashMap。

【讨论】:

感谢大家的帮助。我使用了 LinkedHashMap,它是正确的。谢谢。

以上是关于将 HashMap 转换为具有相同排序的 ArrayList [重复]的主要内容,如果未能解决你的问题,请参考以下文章

按日期对 HashMap 进行排序

将具有相同索引的熊猫系列列表转换为字典

如何将结构转换为具有完全相同字段名称和类型的另一个结构?

如何将具有 Decimal 的 spark DataFrame 转换为具有相同精度的 BigDecimal 的 Dataset?

将具有给定时间的 NSDate 对象转换为具有相同时间和当前日期的对象的最有效方法

通过 PHP 将 Sql 数据库转换为具有正确格式的 JSON,并在 PHP 脚本本身中对值进行排序