Java 一次迭代HashMap 4的键和值

Java 一次迭代HashMap 4的键和值,java,hashmap,iterator,Java,Hashmap,Iterator,我有一个hashmap public HashMap<String, Integer> lines = new HashMap<String, Integer>(); public HashMap line=new HashMap(); 我想返回前4个键,然后是前4个值,然后重复,直到什么都没有剩下 如何最好地做到这一点 我整个上午都在尝试:)如果你能把所有的键作为一个列表,那么你可以一次迭代4次,因为这样你就可以通过索引位置来获取它们,类似这样的 //get all

我有一个hashmap

public HashMap<String, Integer> lines = new HashMap<String, Integer>();
public HashMap line=new HashMap();
我想返回前4个键,然后是前4个值,然后重复,直到什么都没有剩下

如何最好地做到这一点


我整个上午都在尝试:)

如果你能把所有的键作为一个列表,那么你可以一次迭代4次,因为这样你就可以通过索引位置来获取它们,类似这样的

//get all keys as list
List<String> list = new ArrayList<String>(lines.keySet());

//one iteration of this loop deals with 4 keys and 4 values.
for(i=0; i<n; i=i+4) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    k2 = list.get(i+1);
    v2 = lines.get(k2);

    k3 = list.get(i+2);
    v3 = lines.get(k3);

    k4 = list.get(i+3);
    v4 = lines.get(k4);
}
//以列表形式获取所有密钥
List List=newarraylist(lines.keySet());
//这个循环的一次迭代处理4个键和4个值。
对于(i=0;i=2){
k2=列表获取(i+1);
v2=行。获取(k2);
如果(mod>=3){
k3=list.get(i+2);
v3=lines.get(k3);
}
}
}

您可以发布您尝试过的内容以及您想要实现的具体目标吗?我不是java专家,所以让我尽力吧!我在hashmap中存储一个图像的文件路径和一个整数,并将它们写入PDF。但是由于PDF格式的原因,我需要先写四个图像,然后是4个整数(因此它们位于图像下PDF的下一行)。前4个键和前4个值是什么意思!你想返回哪里?可能重复:这是辉煌的(和作品)!但是,如果我不知道列表的大小(可以是1-43之间的任何值),有没有办法考虑到这一点?@J.Walsh您可以先迭代到4的最高倍数,然后分别处理最后几个元素。请看编辑后的答案。非常感谢!这太完美了!
//get all keys as list
List<String> list = new ArrayList<String>(lines.keySet());

//one iteration of this loop deals with 4 keys and 4 values.
int mod = n%4;
for(i=0; i<n-mod; i=i+4) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    k2 = list.get(i+1);
    v2 = lines.get(k2);

    k3 = list.get(i+2);
    v3 = lines.get(k3);

    k4 = list.get(i+3);
    v4 = lines.get(k4);
}

//deal with last 1, 2 or 3 elements separately.
if(mod>=1) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    if(mod>=2) {
        k2 = list.get(i+1);
        v2 = lines.get(k2);

        if(mod>=3) {
            k3 = list.get(i+2);
            v3 = lines.get(k3);
        }
    }
}