在排序的地图中显示第一条记录

时间:2014-10-02 04:33:51

标签: java map sortedmap

我试图显示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 我该如何排序?

2 个答案:

答案 0 :(得分:4)

subMap()headMap()SortedMapMap无法使用的两种方法

您可以尝试以下方式

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

在您的情况下,KeysString,因此您需要在String中拥有subMap("0","40")个值。 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}

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参数返回地图的一部分,与地图中的键相比较。元素,你不能使用这些方法。