HashMap的遍历最优方式建议使用entrySet()的方式,因为在数据量比较大的时候,它的效率更高。
public static void testEfficiency(){
HashMap hmap = new HashMap();
for(int i=0;i<100;i++){
hmap.put("key"+i, i*10);
}
System.out.println("------遍历方式1:使用entrySet----遍历key和value----------------------");
long start1 = System.currentTimeMillis();
for (Iterator it = hmap.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}
long end1 = System.currentTimeMillis();
System.out.println("方式一,耗时:"+(end1-start1) +"ms");
System.out.println("------遍历方式2:使用keySet----遍历key和value----------------------");
long start2 = System.currentTimeMillis();
for (Iterator it = hmap.keySet().iterator(); it.hasNext();) {
String key= (String) it.next();
System.out.println(key + "=" + hmap.get(key));
}
long end2 = System.currentTimeMillis();
System.out.println("方式二,耗时:"+(end2-start2) +"ms");
}
执行上面的代码后,会出现下面的结果:
——遍历方式1:使用entrySet—-遍历key和value———————-
key79=790
key78=780
key38=380
key39=390
key34=340
key35=350
key36=360
key37=370
key42=420
key41=410
key44=440
key80=800
key43=430
key40=400
key85=850
key86=860
key87=870
key88=880
key81=810
key82=820
key83=830
key84=840
key4=40
key3=30
key6=60
key5=50
key0=0
key2=20
key89=890
key1=10
key49=490
key10=100
key11=110
key8=80
key47=470
key48=480
key7=70
key45=450
key9=90
key46=460
key90=900
key55=550
key91=910
key54=540
key53=530
key52=520
key51=510
key50=500
key98=980
key99=990
key96=960
key97=970
key94=940
key95=950
key92=920
key93=930
key56=560
key57=570
key58=580
key59=590
key21=210
key22=220
key20=200
key60=600
key15=150
key14=140
key62=620
key13=130
key61=610
key12=120
key64=640
key19=190
key63=630
key18=180
key66=660
key17=170
key65=650
key16=160
key69=690
key67=670
key68=680
key30=300
key31=310
key32=320
key33=330
key73=730
key24=240
key72=720
key23=230
key71=710
key26=260
key70=700
key25=250
key77=770
key28=280
key76=760
key27=270
key75=750
key74=740
key29=290
方式一,耗时:1ms
——遍历方式2:使用keySet—-遍历key和value———————-
key79=790
key78=780
key38=380
key39=390
key34=340
key35=350
key36=360
key37=370
key42=420
key41=410
key44=440
key80=800
key43=430
key40=400
key85=850
key86=860
key87=870
key88=880
key81=810
key82=820
key83=830
key84=840
key4=40
key3=30
key6=60
key5=50
key0=0
key2=20
key89=890
key1=10
key49=490
key10=100
key11=110
key8=80
key47=470
key48=480
key7=70
key45=450
key9=90
key46=460
key90=900
key55=550
key91=910
key54=540
key53=530
key52=520
key51=510
key50=500
key98=980
key99=990
key96=960
key97=970
key94=940
key95=950
key92=920
key93=930
key56=560
key57=570
key58=580
key59=590
key21=210
key22=220
key20=200
key60=600
key15=150
key14=140
key62=620
key13=130
key61=610
key12=120
key64=640
key19=190
key63=630
key18=180
key66=660
key17=170
key65=650
key16=160
key69=690
key67=670
key68=680
key30=300
key31=310
key32=320
key33=330
key73=730
key24=240
key72=720
key23=230
key71=710
key26=260
key70=700
key25=250
key77=770
key28=280
key76=760
key27=270
key75=750
key74=740
key29=290
方式二,耗时:2ms
所以,从上面的简单的比较,可以得出当我们需要遍历HashMap的时候,使用EntrySet的遍历的方式效率更高,尤其是数据量比较大的时候,效果越明显。
同步更新博客CreditZookeeper