public int hashCode() { getterCalled(); int result = 1; for (int i = 0; i < lists.length; i++) { result = result * 31 + lists[i].hashCode(); } return result; }
public boolean isEmpty() { getterCalled(); for (int i = 0; i < lists.length; i++) { if (!lists[i].isEmpty()) return false; } return true; }
public Iterator iterator() { getterCalled(); return new MultiListItr(); }
public boolean contains(Object o) { getterCalled(); for (int i = 0; i < lists.length; i++) { if (lists[i].contains(o)) return true; } return false; }
public ListIterator listIterator(int index) { getterCalled(); return new MultiListListItr(index); }
public boolean isStale() { getterCalled(); if (staleListener == null || listChangeListener == null) { // this.stale is only updated in response to list change events or // stale events on the sublists. If we are not listening to sublists // then we must calculate staleness on every invocation. return computeStaleness(); } if (stale == null) { this.stale = computeStaleness() ? Boolean.TRUE : Boolean.FALSE; } return stale.booleanValue(); }
public int indexOf(Object o) { getterCalled(); int offset = 0; for (int i = 0; i < lists.length; i++) { int index = lists[i].indexOf(o); if (index != -1) return offset + index; offset += lists[i].size(); } return -1; }
public Object[] toArray() { getterCalled(); return toArray(new Object[doGetSize()]); }
public Object get(int index) { getterCalled(); int offset = 0; for (int i = 0; i < lists.length; i++) { if (index - offset < lists[i].size()) return lists[i].get(index - offset); offset += lists[i].size(); } throw new IndexOutOfBoundsException("index: " + index + ", size: " //$NON-NLS-1$ //$NON-NLS-2$ + offset); }
public Object[] toArray(Object[] a) { getterCalled(); Object[] result = a; if (result.length < doGetSize()) { result = (Object[]) Array.newInstance(a.getClass() .getComponentType(), doGetSize()); } int offset = 0; for (int i = 0; i < lists.length; i++) { Object[] oa = lists[i].toArray(); System.arraycopy(oa, 0, result, offset, oa.length); offset += lists[i].size(); } return result; }
public int lastIndexOf(Object o) { getterCalled(); int offset = size(); for (int i = 0; i < lists.length; i++) { offset -= lists[i].size(); int index = lists[i].indexOf(o); if (index != -1) return offset + index; } return -1; }
public boolean equals(Object o) { getterCalled(); if (o == this) return true; if (o == null) return false; if (!(o instanceof List)) return false; List that = (List) o; if (doGetSize() != that.size()) return false; int subListIndex = 0; for (int i = 0; i < lists.length; i++) { List subList = that.subList(subListIndex, subListIndex + lists[i].size()); if (!lists[i].equals(subList)) { return false; } subListIndex += lists[i].size(); } return true; }