package org.codemap.util; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import ch.akuhn.util.As; public class SparseTrueBooleanList { private int size; private int[] keys; public SparseTrueBooleanList(boolean... elements) { this.size = elements.length; List<Integer> keys = new ArrayList<Integer>(); for (int n = 0; n < elements.length; n++) { if (elements[n]) keys.add(n); } this.keys = As.intArray(keys); } public boolean get(int index) { if (index < 0 || index >= this.size) throw new IndexOutOfBoundsException(); return Arrays.binarySearch(keys, index) >= 0; } public int size() { return size; } }