| 432 | } |
| 433 | |
| 434 | public static <T> List<T> asList(final T ... array) { |
| 435 | return new AbstractList<T>() { |
| 436 | @Override |
| 437 | public int size() { |
| 438 | return array.length; |
| 439 | } |
| 440 | |
| 441 | @Override |
| 442 | public void add(int index, T element) { |
| 443 | throw new UnsupportedOperationException(); |
| 444 | } |
| 445 | |
| 446 | @Override |
| 447 | public int indexOf(Object element) { |
| 448 | for (int i = 0; i < array.length; ++i) { |
| 449 | if (equal(element, array[i])) { |
| 450 | return i; |
| 451 | } |
| 452 | } |
| 453 | return -1; |
| 454 | } |
| 455 | |
| 456 | @Override |
| 457 | public int lastIndexOf(Object element) { |
| 458 | for (int i = array.length - 1; i >= 0; --i) { |
| 459 | if (equal(element, array[i])) { |
| 460 | return i; |
| 461 | } |
| 462 | } |
| 463 | return -1; |
| 464 | } |
| 465 | |
| 466 | @Override |
| 467 | public T get(int index) { |
| 468 | return array[index]; |
| 469 | } |
| 470 | |
| 471 | @Override |
| 472 | public T set(int index, T value) { |
| 473 | throw new UnsupportedOperationException(); |
| 474 | } |
| 475 | |
| 476 | @Override |
| 477 | public T remove(int index) { |
| 478 | throw new UnsupportedOperationException(); |
| 479 | } |
| 480 | |
| 481 | @Override |
| 482 | public ListIterator<T> listIterator(int index) { |
| 483 | return new Collections.ArrayListIterator(this, index); |
| 484 | } |
| 485 | }; |
| 486 | } |
| 487 | |
| 488 | private static void checkRange(int len, int start, int stop) { |
| 489 | if (start < 0) { |