Java 对树映射进行固定次数的迭代

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

如果我有一个包含string和double的树映射。是否仍然可以从map中检索前10个键?

不在JDK中,但第三方库中有这样做的方法


例如,如果需要键/值对,则通过
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++;
    }