File: BitSetSimpleExample.java

package info (click to toggle)
libjavaewah-java 1.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,168 kB
  • sloc: java: 14,577; xml: 169; sh: 11; makefile: 3
file content (57 lines) | stat: -rw-r--r-- 1,980 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import com.googlecode.javaewah.datastructure.BitSet;
import com.googlecode.javaewah.datastructure.ImmutableBitSet;


public class BitSetSimpleExample {
	public static void main(String[] args) throws IOException {
		BitSet Bitmap1 = BitSet.bitmapOf(0, 2, 55, 64, 512);
		BitSet Bitmap2 = BitSet.bitmapOf(1, 3, 64, 512);
		System.out.println("bitmap 1: " + Bitmap1);
		System.out.println("bitmap 2: " + Bitmap2);
		// or
		BitSet orbitmap = Bitmap1.clone();
		orbitmap.or(Bitmap2);
		System.out.println("bitmap 1 OR bitmap 2: " + orbitmap);
		// and
		BitSet andbitmap = Bitmap1.clone();
		andbitmap.and(Bitmap2);
		System.out.println("bitmap 1 AND bitmap 2: " + andbitmap);
		// xor
		BitSet xorbitmap = Bitmap1.clone();
		xorbitmap.xor(Bitmap2);
		System.out.println("bitmap 1 XOR bitmap 2:" + xorbitmap);
		// serialization
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		// Note: you could use a file output steam instead of ByteArrayOutputStream
		Bitmap1.serialize(new DataOutputStream(bos));
		BitSet Bitmap1new = new BitSet();
		byte[] bout = bos.toByteArray();
		Bitmap1new.deserialize(new DataInputStream(new ByteArrayInputStream(bout)));
		System.out.println("bitmap 1 (recovered) : " + Bitmap1new);
		if (!Bitmap1.equals(Bitmap1new))
			throw new RuntimeException("Will not happen");
		//
		// we can use a ByteBuffer as backend for a bitmap
		// which allows memory-mapped bitmaps
		//
		ByteBuffer bb = ByteBuffer.wrap(bout);
		ImmutableBitSet rmap = new ImmutableBitSet(bb.asLongBuffer());
		System.out.println("bitmap 1 (mapped) : " + rmap);

		if (!rmap.equals(Bitmap1))
			throw new RuntimeException("Will not happen");

		
	}
}