Javolution 6.0.0 java
SubTableImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.util.internal.table;
10 
14 
18 public class SubTableImpl<E> extends TableView<E> {
19 
20  private static final long serialVersionUID = 0x600L; // Version.
21 
23  @SuppressWarnings("unchecked")
24  public static <E> CollectionService<E>[] splitOf(TableService<E> table,
25  int n) {
26  if (n <= 1) throw new IllegalArgumentException("Invalid argument n: "
27  + n);
28  CollectionService<E>[] subTables = new CollectionService[n];
29  int minSize = table.size() / n;
30  int start = 0;
31  for (int i = 0; i < n - 1; i++) {
32  subTables[i] = new SubTableImpl<E>(table, start, start + minSize);
33  start += minSize;
34  }
35  subTables[n - 1] = new SubTableImpl<E>(table, start, table.size());
36  return subTables;
37  }
38 
39  private final int fromIndex;
40  private int toIndex;
41 
42  public SubTableImpl(TableService<E> target, int from, int to) {
43  super(target);
44  if ((from < 0) || (to > target.size()) || (from > to)) throw new IndexOutOfBoundsException(
45  "fromIndex: " + from + ", toIndex: " + to + ", size(): "
46  + target.size()); // As per List.subList contract.
47  fromIndex = from;
48  toIndex = to;
49  }
50 
51  @Override
52  public boolean add(E element) {
53  target().add(toIndex++, element);
54  return true;
55  }
56 
57  @Override
58  public void add(int index, E element) {
59  if ((index < 0) && (index > size())) indexError(index);
60  target().add(index + fromIndex, element);
61  toIndex++;
62  }
63 
64  @Override
65  public void clear() {
66  for (int i = toIndex - 1; i >= fromIndex; i--) { // Better to do it from the end (less shift).
67  target().remove(i);
68  }
70  }
71 
72  @Override
73  public E get(int index) {
74  if ((index < 0) && (index >= size())) indexError(index);
75  return target().get(index + fromIndex);
76  }
77 
78  @Override
79  public E remove(int index) {
80  if ((index < 0) && (index >= size())) indexError(index);
81  toIndex--;
82  return target().remove(index + fromIndex);
83  }
84 
85  @Override
86  public E set(int index, E element) {
87  if ((index < 0) && (index >= size())) indexError(index);
88  return target().set(index + fromIndex, element);
89  }
90 
91  @Override
92  public int size() {
93  return toIndex - fromIndex;
94  }
95 
96  @Override
98  return target().comparator();
99  }
100 
101 }
javolution.util.internal.table.SubTableImpl.serialVersionUID
static final long serialVersionUID
Definition: SubTableImpl.java:20
javolution
javolution.util.service
Definition: BitSetService.java:9
javolution.util.internal.table.SubTableImpl.comparator
Equality<? super E > comparator()
Definition: SubTableImpl.java:97
javolution.util.internal.table.SubTableImpl.splitOf
static< E > CollectionService< E >[] splitOf(TableService< E > table, int n)
Definition: SubTableImpl.java:24
javolution.util.internal.table.SubTableImpl.add
boolean add(E element)
Definition: SubTableImpl.java:52
javolution.util.internal.table.SubTableImpl.toIndex
int toIndex
Definition: SubTableImpl.java:40
javolution.util.internal.table.TableView
Definition: TableView.java:25
javolution.util.internal.table.SubTableImpl.size
int size()
Definition: SubTableImpl.java:92
javolution.util.service.CollectionService
Definition: CollectionService.java:25
javolution.util.function.Equality
Definition: Equality.java:39
javolution.util.internal.table.TableView.element
final E element()
Definition: TableView.java:68
javolution.util.internal.table.TableView.target
TableService< E > target()
Definition: TableView.java:262
javolution.util.function
Definition: Consumer.java:9
javolution.util.internal.table.SubTableImpl
Definition: SubTableImpl.java:18
javolution.util.internal.table.SubTableImpl.clear
void clear()
Definition: SubTableImpl.java:65
javolution.util.internal.table.TableView.indexError
void indexError(int index)
Definition: TableView.java:255
javolution.util.service.TableService
Definition: TableService.java:21
javolution.util.internal.table.SubTableImpl.fromIndex
final int fromIndex
Definition: SubTableImpl.java:39
javolution.util.internal.table.SubTableImpl.SubTableImpl
SubTableImpl(TableService< E > target, int from, int to)
Definition: SubTableImpl.java:42
javolution.util.internal.table.SubTableImpl.add
void add(int index, E element)
Definition: SubTableImpl.java:58
javolution.util
Definition: FastBitSet.java:9