

【java】按位存储:使用int存储boolean数组 | iTimeTraveler
source link: https://itimetraveler.github.io/2016/06/02/%E3%80%90Java%E3%80%91%E6%8C%89%E4%BD%8D%E5%AD%98%E5%82%A8%EF%BC%9A%E4%BD%BF%E7%94%A8int%E5%AD%98%E5%82%A8boolean%E6%95%B0%E7%BB%84/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【Java】按位存储:使用int存储boolean数组
有一种场景,比如App设置页中会有一组开关选项,这个时候保存这些开关的状态,如果每个按钮都对应一个boolean值的话,太大材小用显得鸡肋,频繁读取SharedPreferences 存取效率自然快不过一次读取。
首先,敲定每个boolean值存储的位置
private int mBroadcastCustomValue = 0; //用来存储的int值
public static final int BROADCAST_TYPE_CUSTOM_BASE = 1;
public static final int BROADCAST_TYPE_CUSTOM_TRAFFIC = 1 << 1;
public static final int BROADCAST_TYPE_CUSTOM_CAMERA = 1 << 2;
public static final int BROADCAST_TYPE_CUSTOM_SAFE = 1 << 3;
一、添加Add
private void addLevel(int level){
mBroadcastCustomValue |= level; //add
}
//调用方式如下
addLevel(BROADCAST_TYPE_CUSTOM_BASE);
二、删除Delete
private void deleteLevel(int level){
mBroadcastCustomValue ^= mBroadcastCustomValue & level; //delete
}
//调用方式如下
deleteLevel(BROADCAST_TYPE_CUSTOM_BASE);
三、读取Read
/**
* 从value中读取level的设置值,level即是某个boolean值的位置
*/
private boolean isLevelAccess(int value, int level){
if((value & level) == level){
return true;
}
return false;
}
//调用方式如下
boolean a = isLevelAccess(mBroadcastCustomValue, BROADCAST_TYPE_CUSTOM_BASE);
Recommend
-
101
深入理解按位操作符 2019-03-15 按位操作符(Bitwise operators) 的计算主要用在二...
-
27
在数字逻辑中,逻辑算符异或( exclusive or )是对两个运算元的一种逻辑分析类型,符号为 XOR 或 ⊕(编程语言中常用 ^ )。但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另...
-
26
前言 JavaScript 提供了多种按位操作符,由于不是很了解,我使用频率很低。不过经常看到别人的代码中利用按位操作符简化代码,在一些场景下能够更有效率。本文记录学习按...
-
7
Atomic原子操作Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该...
-
15
背景 最近在园子里看到了这篇文章, 看完这篇会有意外收获:C#枚举高级战术 https://mp.weixin.qq.com/s/yipaL6Acil-uxq_bDDgdyg 想起了很久之前的自己的一篇总结,特地找出来
-
9
您现在的位置:首页 --> 算法 --> 位运算小结(按位与、按位或、按位异或、取反、左移、右移) 位运...
-
5
leetcode 982. 按位与为零的三元组 ...
-
12
LeetCode 第 201 号问题:数字范围按位与-五分钟学算法 当前位置:五分钟学算法 > LeetCodeAnimation > LeetCode 第 201 号问题:数字范围按位...
-
3
不懂就问,对数组操作时,返回所有真值用 testArray.map(Boolean) 是什么写法 zhw2590582 21 小时 19 分钟前 1 [0, '', false, null, NaN].filter(Bool...
-
5
1 题目描述image-20220315143903655 2 位运算 O(n×2n)O(n×2n)...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK