使用枚举实现简单的数据处理

来源:互联网 发布:什么是淘宝店铺推广 编辑:程序博客网 时间:2024/05/16 12:35

项目中有些需求需要对数据进行筛选,或者对数据进行转换。如果数据很多,再使用判断语句来进行就难以满足需求,或者不断的判断烦不胜烦。使用Enum可以实现对大量数据的筛选,也可以对数据进行转换。

举个栗子

1、筛选

判断数据是否在某个范围内

public enum FilterDemoEnum {    fav{        @Override        public String getFormat() {            return "/fav";        }    },    browseHistory{        @Override        public String getFormat() {            return "/browseHistory";        }    },    VIP{        @Override        public String getFormat() {            return "/promoteCode/VIP";        }    };    public abstract String getFormat();    public static boolean getFilterUri(String format) {        for (FilterDemoEnum enums : FilterDemoEnum.values()) {            if (enums.getFormat().equals(format))                return true;        }        return false;    }}

2、数据转换

public enum UserGradeEnum {    v0{        @Override        public int getNumGrade(){            return 0;        }        @Override        public String getVGrade(){            return "V0";        }        @Override        public String getLevelName(){            return "普通成员";        }    },    v1{        @Override        public int getNumGrade(){            return 1;        }        @Override        public String getVGrade(){            return "V1";        }        @Override        public String getLevelName(){            return "银卡会员";        }    },    v2{        @Override        public int getNumGrade(){            return 2;        }        @Override        public String getVGrade(){            return "V2";        }        @Override        public String getLevelName(){            return "金卡会员";        }    },    v3{        @Override        public int getNumGrade(){            return 3;        }        @Override        public String getVGrade(){            return "V3";        }        @Override        public String getLevelName(){            return "白金卡会员";        }    },    v4{        @Override        public int getNumGrade(){            return 4;        }        @Override        public String getVGrade(){            return "V4";        }        @Override        public String getLevelName(){            return "黑金卡会员";        }    };    public abstract int getNumGrade();    public abstract String getVGrade();    public abstract String getLevelName();    /**     * 根据用户等级名称,获取对应的等级数字     * @param context     * @param levelName     * @return     */    public static int getNumGradeByLevelName(Context context, String levelName){        if (MyCenterUtil.getUserId(context) == null){            return 0;        }        if (levelName == null){            levelName = MyCenterUtil.getUserLevelName(context);        }        for (UserGradeEnum gradeEnum : UserGradeEnum.values()){            if (gradeEnum.getLevelName().equalsIgnoreCase(levelName)){                return gradeEnum.getNumGrade();            }        }        return 0;    }    /**     * 根据用户等级“VX",转换为用户等级名称保存到本地     * @param context     * @param vGrade     */    public static void saveLevelNameByVGrade(Context context, String vGrade){        if (MyCenterUtil.strIsNull(vGrade)){            return;        }        for (UserGradeEnum gradeEnum : UserGradeEnum.values()){            if (gradeEnum.getVGrade().equalsIgnoreCase(vGrade)){                MyCenterUtil.saveUserLevelName(context, gradeEnum.getLevelName());            }        }    }}

OK,这样就完成了!避免了大量的重复代码,心情都变好了~ 


0 0
原创粉丝点击