Class AbstractEndToEndTupleList

  • All Implemented Interfaces:
    java.lang.Cloneable, java.lang.Iterable<java.util.List<Member>>, java.util.Collection<java.util.List<Member>>, java.util.List<java.util.List<Member>>, java.util.RandomAccess, TupleIterable, TupleList
    Direct Known Subclasses:
    ArrayTupleList, ListTupleList

    abstract class AbstractEndToEndTupleList
    extends AbstractTupleList
    Abstract implementation of a TupleList that stores tuples in end-to-end format.

    For example, if the arity is 3, the tuples {(A1, B1, C1), (A1, B2, C2)} will be stored as {A1, B1, C1, A2, B2, C2}. This is memory-efficient (only one array, compared to 3 arrays or one array per tuple in other representations), has good locality of reference, and typical operations require few indirections.

    Concrete subclasses can store the data in various backing lists.

    Author:
    jhyde
    • Constructor Detail

      • AbstractEndToEndTupleList

        AbstractEndToEndTupleList​(int arity)
    • Method Detail

      • project

        public TupleList project​(int[] destIndices)
      • backingList

        protected abstract java.util.List<Member> backingList()
      • set

        public java.util.List<Member> set​(int index,
                                          java.util.List<Member> element)
        Specified by:
        set in interface java.util.List<java.util.List<Member>>
        Overrides:
        set in class java.util.AbstractList<java.util.List<Member>>
      • addAll

        public boolean addAll​(java.util.Collection<? extends java.util.List<Member>> c)
        Specified by:
        addAll in interface java.util.Collection<java.util.List<Member>>
        Specified by:
        addAll in interface java.util.List<java.util.List<Member>>
        Overrides:
        addAll in class java.util.AbstractCollection<java.util.List<Member>>
      • addAll

        public boolean addAll​(int i,
                              java.util.Collection<? extends java.util.List<Member>> c)
        Specified by:
        addAll in interface java.util.List<java.util.List<Member>>
        Overrides:
        addAll in class java.util.AbstractList<java.util.List<Member>>