Store Multiple Values in an Integer using JAVA
There are many different ways to apply the concept of storing multiple values in an integer. Some of these are:
1. To store user privileges
2. To store a user’s profile
3. To store the current state of a player in a game
Of course there are other ways these things can be achieved but I quite like the simplicity that comes with using a single integer to store multiple values.
In this post, I will first explain the logic involved when storing multiple values in an integer. Then I will go on to give an example of how to store multiple values in an integer using Java.
There are 2 steps involved in storing multiple values in an integer.
First, you need to assign each of the multiple values to an integer. If, for instance, you are trying to store a users profile, you would assign values like this:
1 = is currently employed 2 = is computer literate 4 = has high school diploma 8 = has degree 16 = has children 32 = is married 64 = can drive 128 = has passport 256 = aged over 18
Notice that each integer is twice the size of the previous one. The reason for this is that these numbers when in binary representation only have one bit that is not 0, which is exactly what we need. The numbers above in binary are:
1 = 00000001 2 = 00000010 4 = 00000100 8 = 00001000 16 = 00001000 32 = 00010000 64 = 00100000 128 = 01000000 256 = 10000000
The next step in storing multiple values in an integer is add all the binary representations of the values that are true for a user. So in this example, lets say a user has the following 4 characteristics:
1. Is currently employed
2. Is computer literate
3. Is married
4. Can drive
This means that the integer representation of each of these values is 1, 2, 32 and 64 respectively. Which we add:
1 + 2 + 32 + 64 = 99
So this particular users information is all stored in the number 99.
To retrieve the users information all we would do is convert the number 99 to binary. 99 in binary is 01100011. Because there are 4 1-bit values in this number, we know that there are 4 values stored in this integer, namely:
00000001 00000010 00100000 01000000
We can get the integer equivalent for each of these binary numbers and use those to find the String value that each integer represents, thus giving us the full profile information.
Now lets see how we can code this in Java.
I will use the previous example to show how to code this in java. First, declare integers that will be used to store a String value and set their values. For example,
int i = 1; int a = 2; int b = 4; ...
Then, use a Map to store all users names and the integers representing their information.
m = new HashMap (); m.put(99, "Seda");
We then use the bitwise operator & to test the users integer against the declared integer. Read more about bitwise operators here. The full code for how to store multiple values in an integer in Java is shown below.
The code above outputs the following:
The profile for this user: Miriam Is currently employed Is over 18 years The profile for this user: Billy Is currently employed Has drivers licence The profile for this user: Seda Is currently employed Is computer literate Is married Has drivers licence The profile for this user: Mwelwa Is currently employed Has a degree Has children Is married Has drivers licence The profile for this user: Douglas Is currently employed Has a degree Is married Has drivers licence Is over 18 years The profile for this user: Phyllis Is currently employed Is computer literate Has a degree Has children