3种场景不同方法遍历Map集合的效率比较

本文通过测试不同场景下,包括同时遍历key和value、仅遍历key以及仅遍历value,对比了Java中HashMap的keySet、entrySet和values方法的遍历效率。实验结果显示,当数据量大时,entrySet遍历key+value的速度较快,而在获取value时,values方法更为高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试用例

//HashMap1:大小为1000000,
//key和value的值均为String,
//key的值为1、2、3.........1000000
Map<String,String> map1 =new HashMap<String,String>();
String key1,value1;
for(int i=1;i<=1000000;i++){
   
    key1 = ""+i;
    value1="value"+i;
    map1.put(key1,value1);
}

//HashMap2:大小为1000000,
//key和value的值为String,
//key的值为50、100、150........50000000
Map<String,String> map2 = new HashMap<String,String>();
String key2,value2;
for(int i=1;i<=1000000;i++){
   
    key2=""+(i*50);
    value2="value"+key2;
    map2.put(key2,value2);
}

测试场景

同时遍历 key+value

keySet利用Iterator遍历

public static long keySet_Iterator(Map<String, String> map) {
   
    long startTime1 =System.currentTimeMillis();
    Iterator<String> iter = map.keySet().iterator();
    while (iter.hasNext()){
   
        key=iter.next();
        value=map.get(key);
    }
    long endTime1 =System.currentTimeMillis();
    return endTime1-startTime1;
}

keySet利用for遍历

public static long keySet_for(Map<String, String> map) {
   
    long startTime2 =System.currentTimeMillis();
    for(String key3:map.keySet()){
   
        value=map.get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢前端的后端MelodyJerry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值