排序包含一组对象的哈希图

时间:2018-06-25 12:03:48

标签: java collections java-8

我有一个结构的哈希图:Map<Integer,Set<class-object>> mymap = new HashMap<>() 映射键中的是整数,值是类对象的集合 类对象中包含以下变量

{
  Integer id 
  String name
}

我想基于class-object.name变量按字母顺序对地图进行排序。 我们如何排序这张地图?可以对这种类型的哈希图进行排序吗?

2 个答案:

答案 0 :(得分:2)

不能。 HashMap无法排序,因为它们是哈希值。

要么使用TreeMap保持键的顺序,要么将数据放在列表中,以便您可以按所需的任何顺序(包括通过调用sort()进行排序的顺序)进行排序。

答案 1 :(得分:1)

将集合平铺到单个列表中,如下所示:

List<MyObject> allObj = myMap.values().forEach(list::addAll);

然后对列表进行排序:

allObj.sort(Comparator.comparing(a -> a.name));