首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

用二进制的与、或、非运算方便的解决实际有关问题

2012-09-10 
用二进制的与、或、非运算方便的解决实际问题二进制的与、或、非运算特殊用法的不同运用场合:1.权限控制下面我

用二进制的与、或、非运算方便的解决实际问题
二进制的与、或、非运算特殊用法的不同运用场合:
1.权限控制
    下面我用几个数字来代表增,删,改,查。(注:1带有有权限,有几个1,就代表有几个权限,1的位置不同,所带表的权限也不同)

/** * 通过3次循环,对field 进行快速分类,找出彼此code不同的TableField * @author qihuan * */public class QuickDiff {    private List<TableField> oldFieldPop = new ArrayList<TableField>();    private List<TableField> newFieldAppend = new ArrayList<TableField>();    private List<String> commonCode = new ArrayList<String>();    private Map<String, TableField> newFieldMap;    private Map<String, TableField> oldFieldMap;        public QuickDiff(){    }    /**     * 通过3次循环,对field 进行快速分类     * @param oldFields     * @param newFields     */    public void doDiff(List<TableField> oldFields,List<TableField> newFields){// key:desc -- value:对应出现次数Map<String,Integer> countMap = new HashMap<String, Integer>();addToMap(countMap,oldFields,1);//old 权为 1addToMap(countMap,newFields,10);//new 权为10newFieldMap = turnToMapByCode(newFields);oldFieldMap = turnToMapByCode(oldFields);//对 独有的code进行分类for(String code : countMap.keySet()){    int value = countMap.get(code);    if(value == 11){commonCode.add(code);//do nothing    }else if(value == 10){newFieldAppend.add(newFieldMap.get(code));    }else if(value == 1){oldFieldPop.add(oldFieldMap.get(code));    }}    }        /**     * 按照 code 进行分类     * @param fields     * @return     */    private Map<String, TableField> turnToMapByCode(List<TableField> fields){Map<String, TableField> fieldMap = new HashMap<String, TableField>();for(TableField tf : fields){    String code = tf.getCode();    fieldMap.put(code, tf);}return fieldMap;    }    /**     *      * @param countMap 计数map     * @param fields      * @param value 权     */    private void addToMap(Map<String, Integer> countMap, List<TableField> fields, int value) {for(TableField tf : fields){    String code = tf.getCode();    if(null == countMap.get(code)){countMap.put(code, 0);    }    int count = countMap.get(code);//获取当前权    countMap.put(code, count + value);//更新权}    }    /**     * old 独有的     * @return     */    public List<TableField> getOldFieldPop() {            return oldFieldPop;    }    /**     * new 独有的     * @return     */    public List<TableField> getNewFieldAppend() {            return newFieldAppend;    }    /**     * 共有的     * @return     */    public List<String> getCommonCode() {            return commonCode;    }    /**     * newField to Map     * @return     */    public Map<String, TableField> getNewFieldMap() {            return newFieldMap;    }    /**     * oldField to Map     * @return     */    public Map<String, TableField> getOldFieldMap() {            return oldFieldMap;    }    }

热点排行