我搜索了很多网页(和Stackoverflow),但无法找到我想要的内容。也无法真正理解这个概念。
作为一个Java赋值,我有一个在其中存储一些值的treeMap。
static Map<String, Double> customers = new TreeMap<String, Double>();
当然,它通过它的字符串值来存储它们。但是我希望它以它的Double值来存储它的值。我如何通过比较器实现这一目标?细节将不胜感激。
同样在这个赋值中,我还有另一个单独的treeMap,它存储不同的值。再次声明如下:
static Map<String, Double> customers = new TreeMap<String, Double>();
它可以存储它按String升序的值。我正在使用它来打印它的值,但我还需要按升序排序打印它的值。那么如何重新排序treeMap。再次,细节将非常感激。
答案 0 :(得分:2)
您无法重新排序TreeMap
。它具有固定的迭代顺序,在TreeMap
构造时确定。如果您想要不同的排序顺序,请使用不同的数据结构。
我正在使用它来打印它的值,但我还需要按升序排序打印它的值。
所以不要担心排序TreeMap
。在地图中创建List<Double>
个值,然后对其进行排序。
List<Double> values = new ArrayList<Double>(customers.values());
Collections.sort(values);
System.out.println(values);
答案 1 :(得分:1)
制作另一张地图:
Map<Double, String> values = new TreeMap<Double, String>();
并始终添加到两个地图(例如通过辅助方法)。除非存在内存限制,否则您将按客户排序customers
地图,并按values
值所代表的任何值排序Double
。
如果您可以有重复值,您可以改为为客户制作一个列表(或一组,取决于要求):
Map<Double, List<String>> values = new TreeMap<Double, List<String>>();