将 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将具有 Decimal 的 spark DataFrame 转换为具有相同精度的 BigDecimal 的 Dataset?