1

我在网上(和 Stackoverflow)搜索了很多,但找不到我要找的东西。也无法真正理解这个概念。

作为 Java 分配,我有一个 treeMap 在其中存储一些值。

static Map<String, Double> customers = new TreeMap<String, Double>();

自然地,它按其字符串值升序存储它们。但我希望它存储它的值按它的 Double 值升序。我怎样才能通过比较器实现这一点?细节将不胜感激。

同样在这个作业中,我还有另一个单独的 treeMap,它存储不同的值。再次声明如下:

static Map<String, Double> customers = new TreeMap<String, Double>();

它可以按字符串升序存储它的值。我像这样使用它来打印它的值,但我还需要按 Double 排序的升序打印它的值。那么如何重新排序treeMap。再次,细节将不胜感激。

4

2 回答 2

2

您无法重新排序TreeMap. 它有一个固定的迭代顺序,在TreeMap构造时确定。如果您想要不同的排序顺序,请使用不同的数据结构。

我像这样使用它来打印它的值,但我还需要按 Double 排序的升序打印它的值。

所以不用担心排序TreeMap。在地图中创建一个List<Double>值,并对它们进行排序。

List<Double> values = new ArrayList<Double>(customers.values());
Collections.sort(values);
System.out.println(values);
于 2012-04-06T16:30:38.773 回答
1

制作另一张地图:

Map<Double, String> values = new TreeMap<Double, String>();

并始终添加到两个地图(例如通过辅助方法)。除非存在内存限制,否则您的customers地图将按客户values排序并按值表示的任何Double值排序。

如果您可以有重复的值,您可以创建一个客户列表(或一组,取决于要求):

Map<Double, List<String>> values = new TreeMap<Double, List<String>>();
于 2012-04-06T16:31:46.693 回答