枚舉和map是Java中非常常用的數(shù)據(jù)結(jié)構(gòu)類型,它們?cè)谌≈敌噬细饔袃?yōu)劣。下面我們來(lái)分別看一下它們?cè)谌≈禃r(shí)的表現(xiàn)。
枚舉
枚舉最大的優(yōu)點(diǎn)是枚舉值是常量,而且Java虛擬機(jī)會(huì)保證枚舉值的唯一性,不會(huì)出現(xiàn)重復(fù)值的情況。
在使用枚舉類型時(shí),我們可以使用switch語(yǔ)句進(jìn)行取值。switch語(yǔ)句的執(zhí)行效率很高,因?yàn)樗膱?zhí)行速度與case的數(shù)量無(wú)關(guān)。
public enum Color {
RED, GREEN, BLUE;
}
public void testEnum(Color color) {
switch (color) {
case RED:
// do something
break;
case GREEN:
// do something
break;
case BLUE:
// do something
break;
default:
// do something
}
}
Map
Map的取值方式是通過(guò)Key進(jìn)行映射的,相對(duì)來(lái)說(shuō)比枚舉要靈活得多。
我們可以使用get方法從Map中取出某個(gè)Key對(duì)應(yīng)的值。
Map<String, Object> map = new HashMap<>();
map.put("name", "john");
map.put("age", 25);
public void testMap(String key) {
Object value = map.get(key);
}
使用Map取值的過(guò)程中,會(huì)涉及到Key的hash計(jì)算和比較操作,因此在大規(guī)模數(shù)據(jù)取值的時(shí)候效率可能會(huì)受到影響。
總的來(lái)說(shuō),枚舉在取值效率上比Map更好。但是,在實(shí)際使用中應(yīng)該視具體情況選擇使用何種數(shù)據(jù)結(jié)構(gòu)。
上一篇php git 教程
下一篇php gif gd