我需要一个数据结构,例如:
Map<String, List<Profile>> profilePool;
我需要的是每个键的列表应该排序。我可以在profilePool.put()
上使用某些属性上的某个比较对象来手动执行此操作,以使列表按照键进行排序。
但是我们可以将一个比较功能附加到List&lt;&gt;这样每当一个对象插入到列表中时,它应该将它放在一个特定的索引处,保持顺序?
或者我们是否有任何其他数据结构,易于使用并执行相同的任务?
答案 0 :(得分:4)
Java没有提供开箱即用的功能
如果值得,您可以创建自己的包装SortedList
类来实现List
。
每次在其中添加元素时,您都可以识别要用于二分查找的插入位置,并将新值推送到此位置。
答案 1 :(得分:0)
如果重复元素(基于.equals()
)完全可以互换,则可以使用Guava的SortedMultiset。它只存储每个重复元素的一个实例,迭代器将多次返回同一个实例。除了技术性之外,它的功能与SortedList相同。
Map<String, SortedMultiset<Profile>> profilePool;