假设键值对来自流,我们逐个读取它们并将它们添加到需要按值然后键排序的TreeMap中,我该如何实现?我不是在谈论任何中间地图,使用它我可以轻松地编写一个Comparator来从这个地图中获取相应的值并在排序逻辑中使用它。这是不允许的。直接,它是如何可能的。我不认为它可能不使用其他数据结构。或者我在某个地方搞砸了?任何建议!
举个例子:
apple,2
香蕉,20
橙色,5
它应该在树中:
apple,2
橙色,5
香蕉,20
答案 0 :(得分:0)
如果不允许使用其他结构,那么我将在树形图中使用包含原始密钥和数据源值的合成密钥。在这种情况下,您将拥有类似的内容:
[key, value] -> value
由于您在两个地方引用相同的值对象,因此它不会使用更多内存。它需要有自定义比较器,用于比较合成键的值部分。
所以最后你必须再定义两个类。
PS:当然,您不能再使用此地图通过原始密钥查找价值了。它只对订购键值对有用。通过这种方式,使用带有键值对的TreeSet作为元素会更好。