HashMap Java中的有序列表

时间:2017-07-11 14:20:00

标签: java

我需要一个数据结构,例如:

Map<String, List<Profile>> profilePool;

我需要的是每个键的列表应该排序。我可以在profilePool.put()上使用某些属性上的某个比较对象来手动执行此操作,以使列表按照键进行排序。 但是我们可以将一个比较功能附加到List&lt;&gt;这样每当一个对象插入到列表中时,它应该将它放在一个特定的索引处,保持顺序?

或者我们是否有任何其他数据结构,易于使用并执行相同的任务?

2 个答案:

答案 0 :(得分:4)

Java没有提供开箱即用的功能 如果值得,您可以创建自己的包装SortedList类来实现List

每次在其中添加元素时,您都可以识别要用于二分查找的插入位置,并将新值推送到此位置。

答案 1 :(得分:0)

如果重复元素(基于.equals())完全可以互换,则可以使用Guava的SortedMultiset。它只存储每个重复元素的一个实例,迭代器将多次返回同一个实例。除了技术性之外,它的功能与SortedList相同。

Map<String, SortedMultiset<Profile>> profilePool;