我试图显示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 我该如何排序?
答案 0 :(得分:4)
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");
在您的情况下,Keys
为String
,因此您需要在String
中拥有subMap("0","40")
个值。 0
是起始键,“40”是结束键。您的newDouble40
个元素的密钥位于0
和40
之间。
您可以在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}
Out put:
{{1}}
答案 1 :(得分:0)
这里的主要问题是你正在尝试使用子接口的方法(java.util.SortedMap),接口Map不公开headMap(...)或subMap(...)方法。 / p>
将编译的正确代码是:
SortedMap<String, Integer> doubleCount = new TreeMap<String, Integer>();
Map<String, Integer> newDoubleCount = doubleCount.headMap("40");
你应该考虑的一件事是,除了你知道第40个键的值是什么外,SortedMap的方法基于key参数返回地图的一部分,与地图中的键相比较。元素,你不能使用这些方法。