在Java中使用TreeMap

时间:2012-04-06 16:28:13

标签: java sorting collections treemap

我搜索了很多网页(和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。再次,细节将非常感激。

2 个答案:

答案 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>>();