消息关闭
    暂无新消息!

Java中枚举遍历效率问题探讨

问题作者 : 大新2017-06-22发布

public enum  AmountItem {
    零到一千("1", "0-1000"),
    一千到五千("2", "1000-5000"),
    五千到两万("3", "5000-20000"),
    NULL("-1", "");
    
    private String code;
    private String name;
    private static final Map<String, AmountItem> codeMap;
    
    
    public static AmountItem fromCode1(String code) {
        AmountItem item = (AmountItem)codeMap.get(code);
        return item == null?NULL:item;
    }
    
    public static AmountItem fromCode2(String code) {
       for(AmountItem item:AmountItem.values()){
        if(item.getCode().equals(code)){
        return item;
        }
       }
       return NULL;
    }
    
    public static Collection<AmountItem> all() {
        EnumSet enumSet = EnumSet.allOf(AmountItem.class);
        enumSet.remove(NULL);
        return enumSet;
    }


    static {
        codeMap = new HashMap<String, AmountItem>((int)((float)values().length / 0.75F) + 1);
        AmountItem[] arr$ = values();
        int len$ = arr$.length;
        for(int i$ = 0; i$ < len$; ++i$) {
            AmountItem item = arr$[i$];
            codeMap.put(item.code, item);
        }
    }

    private AmountItem(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return this.code;
    }

    public String getName() {
        return this.name;
    }

 
}


今天发现以上代码,求高手解答fromCode1和fromCode2这两个方法哪个效率更高?

1个回答

︿ 0
fromCode2  会循环遍历所有 个人觉得 这样性能会差一点  你可以写一个测试类测试一下  ,搞多一点数据就知道效果了