Java 对树映射进行固定次数的迭代
如果我有一个包含string和double的树映射。是否仍然可以从map中检索前10个键?不在JDK中,但第三方库中有这样做的方法Java 对树映射进行固定次数的迭代,java,iteration,treemap,Java,Iteration,Treemap,如果我有一个包含string和double的树映射。是否仍然可以从map中检索前10个键?不在JDK中,但第三方库中有这样做的方法 例如,如果需要键/值对,则通过treeMap.entrySet().iterator()获取迭代器;如果只关心键,则通过treeMap.keySet().iterator()调用iterator.next()10次或只要iterator.hasNext()返回true List<Map.Entry<String, Double>> first
例如,如果需要键/值对,则通过
treeMap.entrySet().iterator()
获取迭代器;如果只关心键,则通过treeMap.keySet().iterator()
调用iterator.next()
10次或只要iterator.hasNext()
返回true
List<Map.Entry<String, Double>> firstTen = new ArrayList<Map.Entry<String, Double>>(10);
Iterator<String, Double> iterator = treeMap.entrySet().iterator();
for (int i = 0; iterator.hasNext() && i < 10; i++) {
firstTen.add(iterator.next());
}
List firstTen=新数组列表(10);
迭代器迭代器=treeMap.entrySet().Iterator();
for(int i=0;iterator.hasNext()&&i<10;i++){
add(iterator.next());
}
由于树映射
是导航地图
,因此您应该查看该界面中的方法。没有任何东西可以让您选择第一个n
,但是您可以选择一个键小于给定键的所有条目,等等
否则,我将只使用一个迭代器
,并在n
迭代后停止。将entrySet()
包装在一个列表中,并创建一个子列表()
:
SortedMap treeMap=newtreemap();
前十名名单=
新建ArrayList(treeMap.entrySet())
.子列表(0,10);
对于(条目:firstTen){
//对条目做些什么
}
缺点:整个映射将被复制到列表中。它使用dkarp和sean提供的代码片段。然而,它也在DJClayworth的建议下发挥了作用。我是这样解决的:
c=sorted_map.keySet();
Iterator itr=c.iterator();
String s="";
while (i<iteratesize&&itr.hasNext()){
s=(String) itr.next();
System.out.println(s);
s="";
i++;
}
c=sorted_map.keySet();
迭代器itr=c.Iterator();
字符串s=“”;
while(i)你为什么不能在迭代器上调用next()十次呢?它成功了!非常感谢。@Rushdi Shams,如果没有上下文,很难给出一个示例,例如,你想用前10个键做什么。
c=sorted_map.keySet();
Iterator itr=c.iterator();
String s="";
while (i<iteratesize&&itr.hasNext()){
s=(String) itr.next();
System.out.println(s);
s="";
i++;
}