Java Map遍历方式方式及性能测试
转自: <h2 style="color:rgb(34,34,34);border-bottom-color:rgb(238,238,238);border-bottom-width:1px;border-bottom-style:solid;font-size:18px;font-family:'microsoft yahei';">
<p style="color:rgb(68,68,68);font-family:'microsoft yahei';font-size:14px;"> <p style="color:rgb(68,68);font-family:'microsoft yahei';font-size:14px;"> 为了解遍历性能的真实差距,包括在遍历key+value、遍历key、遍历value等不同场景下的差异,我试着进行了一些对比测试。 <h2 style="color:rgb(34,238);border-bottom-width:1px;border-bottom-style:solid;font-size:18px;font-family:'microsoft yahei';"> 2. 对比测试 <p style="color:rgb(68,68);font-family:'microsoft yahei';font-size:14px;"> 一开始只进行了简单的测试,但结果却表明keySet的性能更好,这一点让我很是费解,不都说entrySet明显好于keySet吗?为了进一步地进行验证,于是采用了不同的测试数据进行更详细的对比测试。 <h3 style="color:rgb(34,238);border-bottom-width:1px;border-bottom-style:solid;font-size:14px;font-family:'microsoft yahei';"> 2.1 测试数据 <p style="color:rgb(68,68);font-family:'microsoft yahei';font-size:14px;"> 2.1.1 HashMap测试数据 <p style="color:rgb(68,68);font-family:'microsoft yahei';font-size:14px;"> HashMap-1,大小为100万,key和value均为String,key的值为1、2、3……1000000:
.keySet().iterator(); ? ?(iter.hasNext())?{ ? ? ? value?=?.(iter.next()); ? }
>>?iter?=?map.entrySet().iterator(); ? ?(iter.hasNext())?{ ? value?=?iter.next().getValue(); ? }
>?entry:?map.entrySet())?{ ? ? ? value?=?entry.getValue(); ? }
?(?value?:?.values())?{ ?
}
?(>?entry:?map.entrySet())?{ ?
? ? key?=?entry.getKey(); ?
? ? value?=?entry.getValue(); ?
} ?(.values())?{ ?
}
?(.(key); ?
} ?(Entry<.values())?{ ?
} |