return start + nbits - 1;\r
}\r
\r
+\r
public boolean intersects(RLE b2) {\r
- if (b2.lastBit() < this.firstBit())\r
+ if (b2.lastBit() < this.firstBit()) {\r
return false;\r
- if (b2.firstBit() > this.lastBit())\r
+ }\r
+ if (b2.firstBit() > this.lastBit()) {\r
return false;\r
+ }\r
return true;\r
}\r
\r
public boolean isSubset(RLE b2) {\r
- if (firstBit() < b2.firstBit())\r
+ if (firstBit() < b2.firstBit()) {\r
return false;\r
- if (firstBit() > b2.lastBit())\r
+ }\r
+ if (firstBit() > b2.lastBit()) {\r
return false;\r
- if (lastBit() < b2.firstBit())\r
+ }\r
+ if (lastBit() < b2.firstBit()) {\r
return false;\r
- if (lastBit() > b2.lastBit())\r
+ }\r
+ if (lastBit() > b2.lastBit()) {\r
return false;\r
+ }\r
return true;\r
}\r
\r
b2 = this;\r
}\r
long end = b1.lastBit();\r
- if (b2.lastBit() > b1.lastBit())\r
+ if (b2.lastBit() > b1.lastBit()) {\r
end = b2.lastBit();\r
+ }\r
return new RLE(b1.firstBit(), end - b1.firstBit() + 1);\r
}\r
\r
}\r
\r
@Override\r
- public int compareTo(RLE o) {\r
- if (this.equals(o))\r
+ public int compareTo(RLE rle) {\r
+ if (this.equals(rle)) {\r
return 0;\r
- return (start < o.start) ? -1 : 1;\r
+ }\r
+ return (start < rle.start) ? -1 : 1;\r
}\r
\r
@Override\r
public boolean equals(Object obj) {\r
if (obj instanceof RLE) {\r
- RLE b = (RLE) obj;\r
- return (start == b.start) && (nbits == b.nbits);\r
+ RLE rle = (RLE) obj;\r
+ return (start == rle.start) && (nbits == rle.nbits);\r
}\r
return false;\r
}\r
/**\r
* Creates a new bit set, with bits set according to the value of <code>s</code>.\r
*\r
- * @param s the initialization String\r
+ * @param str the initialization String\r
*/\r
- public RLEBitSet(String s) {\r
+ public RLEBitSet(String str) {\r
bitsets = new TreeSet<>();\r
- set(s);\r
+ set(str);\r
}\r
\r
/**\r
* @return the logical size of this {@code RLEBitSet}\r
*/\r
public long length() {\r
- if (isEmpty())\r
+ if (isEmpty()) {\r
return 0;\r
+ }\r
return bitsets.last().lastBit() + 1;\r
}\r
\r
public boolean get(long bit) {\r
synchronized (bitsets) {\r
for (RLE bs : bitsets) {\r
- if (bit >= bs.firstBit() && bit <= bs.lastBit())\r
+ if (bit >= bs.firstBit() && bit <= bs.lastBit()) {\r
return true;\r
+ }\r
}\r
}\r
return false;\r
/**\r
* Set one or more bits to true, based on the value of <code>s</code>.\r
*\r
- * @param s the initialization String, which consists of a comma or space separated list of\r
+ * @param str the initialization String, which consists of a comma or space separated list of\r
* non-negative numbers and ranges. An individual number represents the bit index to set.\r
* A range (two numbers separated by a dash) causes all bit indexes between the two numbers\r
* (inclusive) to be set.\r
* @throws NumberFormatException - if a number is incorrectly formatted\r
* @throws IndexOutOfBoundsException - if an index is negative\r
*/\r
- public void set(String s) {\r
- s = s.trim();\r
- if (!s.isEmpty()) {\r
- for (String s2 : s.split("[, \n]+")) {\r
+ public void set(String str) {\r
+ str = str.trim();\r
+ if (!str.isEmpty()) {\r
+ for (String s2 : str.split("[, \n]+")) {\r
if (s2.indexOf('-') >= 0) {\r
String[] pp = s2.split("-");\r
- long f = Long.parseLong(pp[0]);\r
- long t = Long.parseLong(pp[1]);\r
- set(f, t + 1);\r
- } else\r
+ long l1 = Long.parseLong(pp[0]);\r
+ long l2 = Long.parseLong(pp[1]);\r
+ set(l1, l2 + 1);\r
+ } else {\r
set(Long.parseLong(s2));\r
+ }\r
}\r
}\r
}\r
if (bs.intersects(newbits)) {\r
// preserve the bits that are not being cleared\r
long len = newbits.firstBit() - bs.firstBit();\r
- if (len > 0)\r
+ if (len > 0) {\r
newranges.add(new RLE(bs.firstBit(), len));\r
+ }\r
len = bs.lastBit() - newbits.lastBit();\r
- if (len > 0)\r
+ if (len > 0) {\r
newranges.add(new RLE(newbits.lastBit() + 1, len));\r
+ }\r
bs.nbits = 0;\r
}\r
}\r
* Checks that fromIndex ... toIndex is a valid range of bit indices.\r
*/\r
private static void checkRange(long from, long to) {\r
- if (from < 0)\r
+ if (from < 0) {\r
throw new IndexOutOfBoundsException("fromIndex < 0: " + from);\r
- if (to < 0)\r
+ }\r
+ if (to < 0) {\r
throw new IndexOutOfBoundsException("toIndex < 0: " + to);\r
- if (from > to)\r
+ }\r
+ if (from > to) {\r
throw new IndexOutOfBoundsException("fromIndex: " + from + " > toIndex: " + to);\r
+ }\r
}\r
\r
/**\r
* @return the number of bits set to {@code true} in this {@code RLEBitSet}.\r
*/\r
public int cardinality() {\r
- int n = 0;\r
+ int trueCount = 0;\r
synchronized (bitsets) {\r
for (RLE bs : bitsets) {\r
- n += bs.cardinality();\r
+ trueCount += bs.cardinality();\r
}\r
}\r
- return n;\r
+ return trueCount;\r
}\r
\r
/**\r
for (RLE bs : bitsets) {\r
sb.append(prefix);\r
prefix = ",";\r
- long s = bs.firstBit();\r
- long e = bs.lastBit();\r
- sb.append(s);\r
- if (s != e)\r
- sb.append('-').append(e);\r
+ long bit1 = bs.firstBit();\r
+ long bit2 = bs.lastBit();\r
+ sb.append(bit1);\r
+ if (bit1 != bit2) {\r
+ sb.append('-').append(bit2);\r
+ }\r
}\r
}\r
return sb.toString();\r
*/\r
public Iterator<Long[]> getRangeIterator() {\r
return new Iterator<Long[]>() {\r
- private Iterator<RLE> i = bitsets.iterator();\r
+ private Iterator<RLE> iterator = bitsets.iterator();\r
\r
@Override\r
public boolean hasNext() {\r
- return i.hasNext();\r
+ return iterator.hasNext();\r
}\r
\r
@Override\r
public Long[] next() {\r
- RLE bs = i.next();\r
+ RLE bs = iterator.next();\r
return new Long[]{bs.firstBit(), bs.lastBit()};\r
}\r
\r