【发布时间】:2019-08-20 09:29:06
【问题描述】:
我有一个带有整数的 HashMap 和一些 Element 对象的 ArrayList。元素对象用价格和数量来描述。我想遍历每个 ArrayList 中的所有这些元素,通过调用每个元素 element.price() 来总结它们,并创建一个新的 HashMap,其中包含来自每个数组列表的旧键和表示总和的新值。新哈希映射的键应该保持不变。尝试使用流来做到这一点。
public static HashMap<Integer, Double> findIncomes(HashMap<Integer, ArrayList<Element>> mapa){
Map<String, Double> m = mapa.entrySet().stream().flatMap()
return m;
}
【问题讨论】:
-
HashMap 可能没有排序。
-
HashMaps 无法被索引,因此对其元素进行排序没有意义。如果你想要一个排序的地图,可以考虑 TreeMap。 -
TreeMap 按键排序,而不是按值排序。你不应该使用地图,不管它是什么类型的。
-
HashMap 实现为哈希表,键或值没有排序。 TreeMap是基于红黑树结构实现的,按key排序。 LinkedHashMap 保留插入顺序。 Hashtable 是同步的,与 HashMap 不同。
-
为什么不首先使用
List而不是Map?
标签: java lambda hashmap java-stream