| 290 | } |
| 291 | |
| 292 | @Override |
| 293 | Iterator rangedIterator(final int start, final int end){ |
| 294 | return new Iterator(){ |
| 295 | int i = start; |
| 296 | int base = i - (i%32); |
| 297 | Object[] array = (start < count())?arrayFor(i):null; |
| 298 | |
| 299 | public boolean hasNext(){ |
| 300 | return i < end; |
| 301 | } |
| 302 | |
| 303 | public Object next(){ |
| 304 | if(i < end) { |
| 305 | if(i-base == 32){ |
| 306 | array = arrayFor(i); |
| 307 | base += 32; |
| 308 | } |
| 309 | return array[i++ & 0x01f]; |
| 310 | } else { |
| 311 | throw new NoSuchElementException(); |
| 312 | } |
| 313 | } |
| 314 | |
| 315 | public void remove(){ |
| 316 | throw new UnsupportedOperationException(); |
| 317 | } |
| 318 | }; |
| 319 | } |
| 320 | |
| 321 | public Iterator iterator(){return rangedIterator(0,count());} |
| 322 | |