在已排序的地图中显示第一条记录
我试图显示出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 我该如何排序?
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
,所以你必须subMap("0","40")
String
值。 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}
感谢您的帮助,我过去了那个错误,但我的问题依然存在,请看下面我的回答 - – Mira 2014-10-02 16:57:46
主要这里的问题是,你正在尝试使用(java.util.SortedMap中)子接口的方法,接口没有按地图不暴露headMap(...)或subMap(...)方法。
正确的代码,将编译将是:
你应该考虑SortedMap<String, Integer> doubleCount = new TreeMap<String, Integer>();
Map<String, Integer> newDoubleCount = doubleCount.headMap("40");
的一件事是什么,该SortedMap的方法返回一个基于密钥参数的地图的一部分,与键比较在地图中,除非你知道第40个元素的键值是多少,否则你不能使用这些方法。
请看下面 – Mira 2014-10-02 16:56:55
'subMap'是'SortedMap'的一种方法,但您的'doubleCount'对象具有抽象的'Map'接口作为其静态类型,而且未排序的'HashMap'也是动态类型。所以,如果你需要的话,首先使用'SortedMap'。 – 5gon12eder 2014-10-02 04:41:44