利用掩码进行IF判断小技巧

高手绕路

在开发过程中经常需要用到if语法进行逻辑的判断,当特定的业务分支过多时,针对if的分支则会特别的多,且if的都需要对应的分支匹配判断语句,或者使用switch进行分类处理。

如if(a.equals("my name is xiaoming")

从性能、代码整洁上考虑:

在某些场景中,则可以使用类似掩码计算来实现IF的判断。

eg.

比如有一个货物,需要对其运送的地点,分别进行判断,一般的作法,是使用List<String>地点集合,然后遍历匹配,使用if对不同的地点,进行不同的处理。


亦可采用如下示例中的做法:

package com.zte.sunquan.demo.mask;

/**
 * Created by XXXX on 2017/3/6.
 */
public class MaskTest {

    private int sendPlace = 0;

    private static int goNanJing = 1;
    private static int goShangHai = 1 << 1;
    private static int goBeiJing = 1 << 4;


    public void addPlace(int place) {
        this.sendPlace = this.sendPlace | place;
    }

    public void removePlace(int place) {
        this.sendPlace = this.sendPlace & ~place;
    }

    public void print() {
        System.out.println("-------------------");
        if ((sendPlace & goNanJing) != 0) {
            System.out.println("goNanjing");
        }
        if ((sendPlace & goShangHai) != 0) {
            System.out.println("goShangHai");
        }
        if ((sendPlace & goBeiJing) != 0) {
            System.out.println("goBeiJing");
        }
    }

    public static void main(String[] args) {
        MaskTest maskTest = new MaskTest();
        maskTest.addPlace(goNanJing);
        maskTest.print();
        maskTest.addPlace(goShangHai);
        maskTest.addPlace(goBeiJing);
        maskTest.print();
        maskTest.removePlace(goBeiJing);
        maskTest.print();
    }
}


打印结果:

-------------------
goNanjing
-------------------
goNanjing
goShangHai
goBeiJing
-------------------
goNanjing
goShangHai

这种方式说破了,也简单。不过也是开发中重构的一种方式。

总结来说:

增A:|A

删A:&(~A)

判断:&A!=0


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值