You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用增强for循环获取LinkedHashMap下一键值对并配对的方法

解决方案

Java的增强for循环本身没有提供直接获取下一个元素的能力,你可以通过以下两种常用方案实现需求:

方案1:使用Iterator迭代集合(推荐,无需额外转存)

LinkedHashMap的entrySet()/keySet()/values()的迭代顺序和插入顺序完全一致,我们可以直接获取迭代器,每次读取两个元素完成配对:

public void modtagMomsAngivelse() {
    // 只需要值的话可以直接迭代values集合,代码更简洁
    Iterator<String> valueIterator = dates.values().iterator();
    while (valueIterator.hasNext()) {
        String startDate = valueIterator.next();
        String endDate = valueIterator.next();
        System.out.println(startDate + " | " + endDate);
    }
}

如果业务需要用到键,也可以迭代entrySet():

public void modtagMomsAngivelse() {
    Iterator<Map.Entry<String, String>> iterator = dates.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, String> startEntry = iterator.next();
        // 这里可以获取起始日期的键:startEntry.getKey()
        String startDate = startEntry.getValue();
        Map.Entry<String, String> endEntry = iterator.next();
        // 这里可以获取结束日期的键:endEntry.getKey()
        String endDate = endEntry.getValue();
        System.out.println(startDate + " | " + endDate);
    }
}

方案2:将值集合转为列表,按索引遍历

如果更习惯按索引访问,可以把values()转成ArrayList,以步长为2遍历索引即可:

public void modtagMomsAngivelse() {
    List<String> dateList = new ArrayList<>(dates.values());
    for (int i = 0; i < dateList.size(); i += 2) {
        String startDate = dateList.get(i);
        String endDate = dateList.get(i + 1);
        System.out.println(startDate + " | " + endDate);
    }
}

注意事项

两种方案都默认LinkedHashMap元素个数为偶数,如果存在业务场景下元素个数为奇数的情况,建议提前判断size() % 2 == 0,或者在取第二个元素前判断迭代器/索引是否合法,避免出现NoSuchElementException或者IndexOutOfBoundsException。

内容的提问来源于stack exchange,提问作者Buster3650

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:21:02