【问题标题】:Display first records in a sorted Map在排序的 Map 中显示第一条记录
【发布时间】:2014-10-02 04:33:50
【问题描述】:

我正在尝试显示存储在地图中的 17K 中的前 40 条记录。我有以下代码

import java.util.*;
Map<String, Integer> doubleCount= new HashMap<String,Integer>(); 
....
Map<String,Integer> newDouble40 = doubleCount.headMap(40);

Java 给我以下错误:

" cannot find symbol - method subMap...

所以我尝试了:

Map<String,Integer> newDouble40 = doubleCount.subMap("",(Integer)40);

确切的错误是: 找不到符号 - 方法 subMap(java.lang.String,java.lang.int)

http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html 如何排序?

【问题讨论】:

  • subMapSortedMap 的一个方法,但是您的 doubleCount 对象具有抽象的 Map 接口作为其静态类型,并且还有未排序的 HashMap 作为动态类型。因此,如果需要,请首先使用SortedMap

标签: java map sortedmap


【解决方案1】:

subMap()headMap()SortedMap 中的两种方法,Map 中没有这些方法

你可以试试下面的方法

 Map<String, Integer> doubleCount= new HashMap<String,Integer>();
 SortedMap<String, Integer> newMap= new TreeMap<>(doubleCount);
 Map<String,Integer> newDouble40 = newMap.subMap("0","40"); 

在您的情况下,KeysString,因此您需要在 subMap("0","40") 中有 String 值。 0 是开始键,“40”是结束键。您的 newDouble40 的元素在 040 之间有一个键。

在这里,您可以将headMap() 用作newMap.headMap("40")。现在您将获得键小于40 的元素。

例如:

 Map<String, Integer> doubleCount= new HashMap<>();
 doubleCount.put("c",1);
 doubleCount.put("d",2);
 doubleCount.put("a",1);
 doubleCount.put("b",4);
 SortedMap<String, Integer> newMap= new TreeMap<>(doubleCount);//sorted now
 Map<String,Integer> map1 = newMap.subMap("a", "c");
 Map<String,Integer> map2 = newMap.headMap("c");
 System.out.println(map1);
 System.out.println(map2);

输出:

 {a=1, b=4}
 {a=1, b=4}

【讨论】:

  • 感谢您的帮助,我克服了那个错误,但我的问题仍然存在,请在下面查看我的回答-
【解决方案2】:

这里的主要问题是您尝试使用子接口 (java.util.SortedMap) 的方法,接口 Map 不公开 headMap(...) 或 subMap(...) 方法。

将编译的正确代码是:

 SortedMap<String, Integer> doubleCount = new TreeMap<String, Integer>();

 Map<String, Integer> newDoubleCount = doubleCount.headMap("40");

您应该考虑的一件事是,与映射中的键相比,SortedMap 的方法根据键参数返回映射的一部分,除非您知道第 40 个键的值是什么元素,你不能使用这些方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多