content: package com.sohu.tv.jedis.stat.enums;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import com.sohu.tv.jedis.stat.utils.NumberUtil;
  
  /**
   * 耗时分布
   * 
   * @author leifu
   * @Date 2015年1月13日
   * @Time 下午5:22:28
   */
  public enum CostTimeDistriEnum {
      // 单位字节
      BETWEEN_MIN_TO_0_MS("-2147483648_0", "非法", 1),
      BETWEEN_0_TO_1_MS("0_1", "0-1毫秒", 2),
      BETWEEN_1_TO_2_MS("1_2", "1-2毫秒", 3),
      BETWEEN_2_TO_5_MS("2_5", "2-5毫秒", 4),
      BETWEEN_5_TO_10_MS("5_10", "5-10毫秒", 5),
      BETWEEN_10_TO_50_MS("10_50", "10-50毫秒", 6),
      BETWEEN_50_TO_100_MS("50_100", "50-100毫秒", 7),
      BETWEEN_100_TO_MAX_MS("100_MAX", "100毫秒以上", 8);
  
      private String value;
      private String info;
      private int type;
  
      private CostTimeDistriEnum(String value, String info, int type) {
          this.value = value;
          this.info = info;
          this.type = type;
      }
  
      public String getValue() {
          return value;
      }
  
      public String getInfo() {
          return info;
      }
  
      public int getType() {
          return type;
      }
  
      public final static Map<String, CostTimeDistriEnum> MAP = new HashMap<String, CostTimeDistriEnum>();
      static {
          for (CostTimeDistriEnum enumObject : CostTimeDistriEnum.values()) {
              MAP.put(enumObject.getValue(), enumObject);
          }
      }
      
      public static CostTimeDistriEnum getByValue(String targetValue){
          return MAP.get(targetValue);
      }
  
      /**
       * 查看length在哪个区间
       * 
       * @param length
       * @return
       */
      public static CostTimeDistriEnum getRightCostDistri(int costTime) {
          CostTimeDistriEnum[] enumArr = CostTimeDistriEnum.values();
          for (CostTimeDistriEnum enumObject : enumArr) {
              if (isInSize(enumObject, costTime)) {
                  return enumObject;
              }
          }
          return null;
      }
  
      /**
       * 确定length在指定区间
       * 
       * @param enumObject
       * @param size
       * @return
       */
      private static boolean isInSize(CostTimeDistriEnum enumObject, int costTime) {
          String value = enumObject.getValue();
          int index = value.indexOf("_");
          int start = NumberUtil.toInt(value.substring(0, index));
          int end = NumberUtil.toInt(value.substring(index + 1));
          if (costTime >= start && costTime < end) {
              return true;
          }
          return false;
      }
  
      public static void main(String[] args) {
          // 获取活在字节区间
          // CostTimeDistriEnum a = getRightCostDistri(6);
      }
  
  }
  