Class AbstractMutableList<T>

All Implemented Interfaces:
Cloneable, Iterable<T>, Collection<T>, List<T>, MutableCollection<T>, InternalIterable<T>, ListIterable<T>, MutableList<T>, OrderedIterable<T>, ReversibleIterable<T>, RichIterable<T>
Direct Known Subclasses:
AbstractArrayAdapter, AbstractMemoryEfficientMutableList, CompositeFastList, FastList

public abstract class AbstractMutableList<T> extends AbstractMutableCollection<T> implements MutableList<T>
  • Constructor Details

    • AbstractMutableList

      public AbstractMutableList()
  • Method Details

    • clone

      public MutableList<T> clone()
      Specified by:
      clone in interface MutableList<T>
    • equals

      public boolean equals(Object that)
      Description copied from interface: ListIterable
      Follows the same general contract as List.equals(Object).
      Specified by:
      equals in interface Collection<T>
      Specified by:
      equals in interface List<T>
      Specified by:
      equals in interface ListIterable<T>
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Description copied from interface: ListIterable
      Follows the same general contract as List.hashCode().
      Specified by:
      hashCode in interface Collection<T>
      Specified by:
      hashCode in interface List<T>
      Specified by:
      hashCode in interface ListIterable<T>
      Overrides:
      hashCode in class Object
    • each

      public void each(Procedure<? super T> procedure)
      Description copied from interface: RichIterable
      The procedure is executed for each element in the iterable.

      Example using a Java 8 lambda expression:

       people.each(person -> LOGGER.info(person.getName()));
       

      Example using an anonymous inner class:

       people.each(new Procedure<Person>()
       {
           public void value(Person person)
           {
               LOGGER.info(person.getName());
           }
       });
       
      This method is a variant of InternalIterable.forEach(Procedure) that has a signature conflict with Iterable.forEach(java.util.function.Consumer).
      Specified by:
      each in interface RichIterable<T>
      See Also:
    • forEachWithIndex

      public void forEachWithIndex(ObjectIntProcedure<? super T> objectIntProcedure)
      Description copied from interface: InternalIterable
      Iterates over the iterable passing each element and the current relative int index to the specified instance of ObjectIntProcedure.

      Example using a Java 8 lambda:

       people.forEachWithIndex((Person person, int index) -> LOGGER.info("Index: " + index + " person: " + person.getName()));
       

      Example using an anonymous inner class:

       people.forEachWithIndex(new ObjectIntProcedure<Person>()
       {
           public void value(Person person, int index)
           {
               LOGGER.info("Index: " + index + " person: " + person.getName());
           }
       });
       
      Specified by:
      forEachWithIndex in interface InternalIterable<T>
      Specified by:
      forEachWithIndex in interface OrderedIterable<T>
      Overrides:
      forEachWithIndex in class AbstractRichIterable<T>
    • forEachWith

      public <P> void forEachWith(Procedure2<? super T,? super P> procedure, P parameter)
      Description copied from interface: InternalIterable
      The procedure2 is evaluated for each element in the iterable with the specified parameter provided as the second argument.

      Example using a Java 8 lambda:

       people.forEachWith((Person person, Person other) ->
           {
               if (person.isRelatedTo(other))
               {
                    LOGGER.info(person.getName());
               }
           }, fred);
       

      Example using an anonymous inner class:

       people.forEachWith(new Procedure2<Person, Person>()
       {
           public void value(Person person, Person other)
           {
               if (person.isRelatedTo(other))
               {
                    LOGGER.info(person.getName());
               }
           }
       }, fred);
       
      Specified by:
      forEachWith in interface InternalIterable<T>
      Overrides:
      forEachWith in class AbstractRichIterable<T>
    • zip

      public <S, R extends Collection<Pair<T, S>>> R zip(Iterable<S> that, R target)
      Description copied from interface: RichIterable
      Same as RichIterable.zip(Iterable) but uses target for output.
      Specified by:
      zip in interface OrderedIterable<T>
      Specified by:
      zip in interface RichIterable<T>
      Overrides:
      zip in class AbstractRichIterable<T>
    • zipWithIndex

      public <R extends Collection<Pair<T, Integer>>> R zipWithIndex(R target)
      Description copied from interface: RichIterable
      Same as RichIterable.zipWithIndex() but uses target for output.
      Specified by:
      zipWithIndex in interface OrderedIterable<T>
      Specified by:
      zipWithIndex in interface RichIterable<T>
      Overrides:
      zipWithIndex in class AbstractRichIterable<T>
    • forEachWithIndex

      public void forEachWithIndex(int fromIndex, int toIndex, ObjectIntProcedure<? super T> objectIntProcedure)
      Description copied from interface: OrderedIterable
      Iterates over the section of the iterable covered by the specified inclusive indexes. The indexes are both inclusive.
      e.g.
       OrderedIterable<People> people = FastList.newListWith(ted, mary, bob, sally)
       people.forEachWithIndex(0, 1, new ObjectIntProcedure<Person>()
       {
           public void value(Person person, int index)
           {
                LOGGER.info(person.getName());
           }
       });
       

      This code would output ted and mary's names.

      Specified by:
      forEachWithIndex in interface OrderedIterable<T>
    • select

      public <R extends Collection<T>> R select(Predicate<? super T> predicate, R target)
      Description copied from interface: RichIterable
      Same as the select method with one parameter but uses the specified target collection for the results.

      Example using a Java 8 lambda expression:

       MutableList<Person> selected =
           people.select(person -> person.person.getLastName().equals("Smith"), Lists.mutable.empty());
       

      Example using an anonymous inner class:

       MutableList<Person> selected =
           people.select(new Predicate<Person>()
           {
               public boolean accept(Person person)
               {
                   return person.person.getLastName().equals("Smith");
               }
           }, Lists.mutable.empty());
       

      Specified by:
      select in interface RichIterable<T>
      Overrides:
      select in class AbstractRichIterable<T>
      Parameters:
      predicate - a Predicate to use as the select criteria
      target - the Collection to append to for all elements in this RichIterable that meet select criteria predicate
      Returns:
      target, which contains appended elements as a result of the select criteria
      See Also:
    • selectWith

      public <P, R extends Collection<T>> R selectWith(Predicate2<? super T,? super P> predicate, P parameter, R target)
      Description copied from interface: RichIterable
      Similar to RichIterable.select(Predicate, Collection), except with an evaluation parameter for the second generic argument in Predicate2.

      E.g. return a Collection of Person elements where the person has an age greater than or equal to 18 years

      Example using a Java 8 lambda expression:

       MutableList<Person> selected =
           people.selectWith((Person person, Integer age) -> person.getAge()>= age, Integer.valueOf(18), Lists.mutable.empty());
       

      Example using an anonymous inner class:

       MutableList<Person> selected =
           people.selectWith(new Predicate2<Person, Integer>()
           {
               public boolean accept(Person person, Integer age)
               {
                   return person.getAge()>= age;
               }
           }, Integer.valueOf(18), Lists.mutable.empty());
       
      Specified by:
      selectWith in interface RichIterable<T>
      Overrides:
      selectWith in class AbstractRichIterable<T>
      Parameters:
      predicate - a Predicate2 to use as the select criteria
      parameter - a parameter to pass in for evaluation of the second argument P in predicate
      target - the Collection to append to for all elements in this RichIterable that meet select criteria predicate
      Returns:
      targetCollection, which contains appended elements as a result of the select criteria
      See Also:
    • reject

      public <R extends Collection<T>> R reject(Predicate<? super T> predicate, R target)
      Description copied from interface: RichIterable
      Same as the reject method with one parameter but uses the specified target collection for the results.

      Example using a Java 8 lambda expression:

       MutableList<Person> rejected =
           people.reject(person -> person.person.getLastName().equals("Smith"), Lists.mutable.empty());
       

      Example using an anonymous inner class:

       MutableList<Person> rejected =
           people.reject(new Predicate<Person>()
           {
               public boolean accept(Person person)
               {
                   return person.person.getLastName().equals("Smith");
               }
           }, Lists.mutable.empty());
       
      Specified by:
      reject in interface RichIterable<T>
      Overrides:
      reject in class AbstractRichIterable<T>
      Parameters:
      predicate - a Predicate to use as the reject criteria
      target - the Collection to append to for all elements in this RichIterable that cause Predicate#accept(Object) method to evaluate to false
      Returns:
      target, which contains appended elements as a result of the reject criteria
    • rejectWith

      public <P, R extends Collection<T>> R rejectWith(Predicate2<? super T,? super P> predicate, P parameter, R target)
      Description copied from interface: RichIterable
      Similar to RichIterable.reject(Predicate, Collection), except with an evaluation parameter for the second generic argument in Predicate2.

      E.g. return a Collection of Person elements where the person has an age greater than or equal to 18 years

      Example using a Java 8 lambda expression:

       MutableList<Person> rejected =
           people.rejectWith((Person person, Integer age) -> person.getAge() < age, Integer.valueOf(18), Lists.mutable.empty());
       

      Example using an anonymous inner class:

       MutableList<Person> rejected =
           people.rejectWith(new Predicate2<Person, Integer>()
           {
               public boolean accept(Person person, Integer age)
               {
                   return person.getAge() < age;
               }
           }, Integer.valueOf(18), Lists.mutable.empty());
       
      Specified by:
      rejectWith in interface RichIterable<T>
      Overrides:
      rejectWith in class AbstractRichIterable<T>
      Parameters:
      predicate - a Predicate2 to use as the reject criteria
      parameter - a parameter to pass in for evaluation of the second argument P in predicate
      target - the Collection to append to for all elements in this RichIterable that cause Predicate#accept(Object) method to evaluate to false
      Returns:
      targetCollection, which contains appended elements as a result of the reject criteria
      See Also:
    • selectAndRejectWith

      public <P> Twin<MutableList<T>> selectAndRejectWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: MutableCollection
      Filters a collection into two separate collections based on a predicate returned via a Pair.
      e.g.
       return lastNames.selectAndRejectWith(Predicates2.lessThan(), "Mason");
       
      Specified by:
      selectAndRejectWith in interface MutableCollection<T>
      Overrides:
      selectAndRejectWith in class AbstractMutableCollection<T>
    • partition

      public PartitionMutableList<T> partition(Predicate<? super T> predicate)
      Description copied from interface: MutableCollection
      Filters a collection into a PartitionedIterable based on the evaluation of the predicate.

      Example using a Java 8 lambda expression:

       PartitionIterable<Person> newYorkersAndNonNewYorkers =
           people.partition(person -> person.getAddress().getState().getName().equals("New York"));
       

      Example using an anonymous inner class:

       PartitionIterable<Person> newYorkersAndNonNewYorkers =
           people.partition(new Predicate<Person>()
           {
               public boolean accept(Person person)
               {
                   return person.getAddress().getState().getName().equals("New York");
               }
           });
       
      Co-variant example for MutableCollection:
       PartitionMutableCollection<Person> newYorkersAndNonNewYorkers =
           people.partition(person -> person.getAddress().getState().getName().equals("New York"));
       
      Specified by:
      partition in interface ListIterable<T>
      Specified by:
      partition in interface MutableCollection<T>
      Specified by:
      partition in interface MutableList<T>
      Specified by:
      partition in interface OrderedIterable<T>
      Specified by:
      partition in interface ReversibleIterable<T>
      Specified by:
      partition in interface RichIterable<T>
    • partitionWith

      public <P> PartitionMutableList<T> partitionWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: MutableCollection
      Filters a collection into a PartitionIterable based on the evaluation of the predicate.

      Example using a Java 8 lambda expression:

       PartitionIterable<Person> newYorkersAndNonNewYorkers =
           people.partitionWith((Person person, String state) -> person.getAddress().getState().getName().equals(state), "New York");
       

      Example using an anonymous inner class:

       PartitionIterable<Person> newYorkersAndNonNewYorkers =
           people.partitionWith(new Predicate2<Person, String>()
           {
               public boolean accept(Person person, String state)
               {
                   return person.getAddress().getState().getName().equals(state);
               }
           }, "New York");
       
      Co-variant example for MutableCollection:
       PartitionMutableCollection<Person> newYorkersAndNonNewYorkers =
           people.partitionWith((Person person, String state) -> person.getAddress().getState().getName().equals(state), "New York");
       
      Specified by:
      partitionWith in interface ListIterable<T>
      Specified by:
      partitionWith in interface MutableCollection<T>
      Specified by:
      partitionWith in interface MutableList<T>
      Specified by:
      partitionWith in interface OrderedIterable<T>
      Specified by:
      partitionWith in interface ReversibleIterable<T>
      Specified by:
      partitionWith in interface RichIterable<T>
    • selectInstancesOf

      public <S> MutableList<S> selectInstancesOf(Class<S> clazz)
      Description copied from interface: MutableCollection
      Returns all elements of the source collection that are instances of the Class clazz.
       RichIterable<Integer> integers =
           List.mutable.with(new Integer(0), new Long(0L), new Double(0.0)).selectInstancesOf(Integer.class);
       
      Co-variant example for MutableCollection:
       MutableCollection<Integer> integers =
           List.mutable.with(new Integer(0), new Long(0L), new Double(0.0)).selectInstancesOf(Integer.class);
       
      Specified by:
      selectInstancesOf in interface ListIterable<T>
      Specified by:
      selectInstancesOf in interface MutableCollection<T>
      Specified by:
      selectInstancesOf in interface MutableList<T>
      Specified by:
      selectInstancesOf in interface OrderedIterable<T>
      Specified by:
      selectInstancesOf in interface ReversibleIterable<T>
      Specified by:
      selectInstancesOf in interface RichIterable<T>
    • removeIf

      public boolean removeIf(Predicate<? super T> predicate)
      Description copied from interface: MutableCollection
      Removes all elements in the collection that evaluate to true for the specified predicate.
      e.g.
       return lastNames.removeIf(Predicates.isNull());
       
      Specified by:
      removeIf in interface MutableCollection<T>
      Overrides:
      removeIf in class AbstractMutableCollection<T>
    • removeIfWith

      public <P> boolean removeIfWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: MutableCollection
      Removes all elements in the collection that evaluate to true for the specified predicate2 and parameter.
       return lastNames.removeIfWith(Predicates2.isNull(), null);
       
      Specified by:
      removeIfWith in interface MutableCollection<T>
      Overrides:
      removeIfWith in class AbstractMutableCollection<T>
    • collect

      public <V, R extends Collection<V>> R collect(Function<? super T,? extends V> function, R target)
      Description copied from interface: RichIterable
      Same as RichIterable.collect(Function), except that the results are gathered into the specified target collection.

      Example using a Java 8 lambda expression:

       MutableList<String> names =
           people.collect(person -> person.getFirstName() + " " + person.getLastName(), Lists.mutable.empty());
       

      Example using an anonymous inner class:

       MutableList<String> names =
           people.collect(new Function<Person, String>()
           {
               public String valueOf(Person person)
               {
                   return person.getFirstName() + " " + person.getLastName();
               }
           }, Lists.mutable.empty());
       
      Specified by:
      collect in interface RichIterable<T>
      Overrides:
      collect in class AbstractRichIterable<T>
      Parameters:
      function - a Function to use as the collect transformation function
      target - the Collection to append to for all elements in this RichIterable that meet select criteria function
      Returns:
      target, which contains appended elements as a result of the collect transformation
      See Also:
    • flatCollect

      public <V, R extends Collection<V>> R flatCollect(Function<? super T,? extends Iterable<V>> function, R target)
      Description copied from interface: RichIterable
      Same as flatCollect, only the results are collected into the target collection.
      Specified by:
      flatCollect in interface RichIterable<T>
      Overrides:
      flatCollect in class AbstractRichIterable<T>
      Parameters:
      function - The Function to apply
      target - The collection into which results should be added.
      Returns:
      target, which will contain a flattened collection of results produced by applying the given function
      See Also:
    • collectWith

      public <P, A, R extends Collection<A>> R collectWith(Function2<? super T,? super P,? extends A> function, P parameter, R target)
      Description copied from interface: RichIterable
      Same as collectWith but with a targetCollection parameter to gather the results.

      Example using a Java 8 lambda expression:

       MutableSet<Integer> integers =
           Lists.mutable.with(1, 2, 3).collectWith((each, parameter) -> each + parameter, Integer.valueOf(1), Sets.mutable.empty());
       

      Example using an anonymous inner class:

       Function2<Integer, Integer, Integer> addParameterFunction =
           new Function2<Integer, Integer, Integer>()
           {
               public Integer value(final Integer each, final Integer parameter)
               {
                   return each + parameter;
               }
           };
       MutableSet<Integer> integers =
           Lists.mutable.with(1, 2, 3).collectWith(addParameterFunction, Integer.valueOf(1), Sets.mutable.empty());
       
      Specified by:
      collectWith in interface RichIterable<T>
      Overrides:
      collectWith in class AbstractRichIterable<T>
      Parameters:
      function - a Function2 to use as the collect transformation function
      parameter - a parameter to pass in for evaluation of the second argument P in function
      target - the Collection to append to for all elements in this RichIterable that meet select criteria function
      Returns:
      targetCollection, which contains appended elements as a result of the collect transformation
    • collectIf

      public <V, R extends Collection<V>> R collectIf(Predicate<? super T> predicate, Function<? super T,? extends V> function, R target)
      Description copied from interface: RichIterable
      Same as the collectIf method with two parameters but uses the specified target collection for the results.
      Specified by:
      collectIf in interface RichIterable<T>
      Overrides:
      collectIf in class AbstractRichIterable<T>
      Parameters:
      predicate - a Predicate to use as the select criteria
      function - a Function to use as the collect transformation function
      target - the Collection to append to for all elements in this RichIterable that meet the collect criteria predicate
      Returns:
      targetCollection, which contains appended elements as a result of the collect criteria and transformation
      See Also:
    • detect

      public T detect(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Returns the first element of the iterable for which the predicate evaluates to true or null in the case where no element returns true. This method is commonly called find.

      Example using a Java 8 lambda expression:

       Person person =
           people.detect(person -> person.getFirstName().equals("John") && person.getLastName().equals("Smith"));
       

      Example using an anonymous inner class:

       Person person =
           people.detect(new Predicate<Person>()
           {
               public boolean accept(Person person)
               {
                   return person.getFirstName().equals("John") && person.getLastName().equals("Smith");
               }
           });
       
      Specified by:
      detect in interface RichIterable<T>
      Overrides:
      detect in class AbstractRichIterable<T>
    • detectWith

      public <P> T detectWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns the first element that evaluates to true for the specified predicate2 and parameter, or null if none evaluate to true.

      Example using a Java 8 lambda expression:

       Person person =
           people.detectWith((person, fullName) -> person.getFullName().equals(fullName), "John Smith");
       

      Example using an anonymous inner class:

       Person person =
           people.detectWith(new Predicate2<Person, String>()
           {
               public boolean accept(Person person, String fullName)
               {
                   return person.getFullName().equals(fullName);
               }
           }, "John Smith");
       
      Specified by:
      detectWith in interface RichIterable<T>
      Overrides:
      detectWith in class AbstractRichIterable<T>
    • detectOptional

      public Optional<T> detectOptional(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Returns the first element of the iterable for which the predicate evaluates to true as an Optional. This method is commonly called find.

      Example using a Java 8 lambda expression:

       Person person =
           people.detectOptional(person -> person.getFirstName().equals("John") && person.getLastName().equals("Smith"));
       

      Specified by:
      detectOptional in interface RichIterable<T>
      Overrides:
      detectOptional in class AbstractRichIterable<T>
    • detectWithOptional

      public <P> Optional<T> detectWithOptional(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns the first element that evaluates to true for the specified predicate2 and parameter as an Optional.

      Example using a Java 8 lambda expression:

       Optional<Person> person =
           people.detectWithOptional((person, fullName) -> person.getFullName().equals(fullName), "John Smith");
       

      Specified by:
      detectWithOptional in interface RichIterable<T>
      Overrides:
      detectWithOptional in class AbstractRichIterable<T>
    • detectIndex

      public int detectIndex(Predicate<? super T> predicate)
      Description copied from interface: OrderedIterable
      Returns the index of the first element of the OrderedIterable for which the predicate evaluates to true. Returns -1 if no element evaluates true for the predicate.
      Specified by:
      detectIndex in interface OrderedIterable<T>
    • detectLastIndex

      public int detectLastIndex(Predicate<? super T> predicate)
      Description copied from interface: ReversibleIterable
      Returns the index of the last element of the ReversibleIterable for which the predicate evaluates to true. Returns -1 if no element evaluates true for the predicate.
      Specified by:
      detectLastIndex in interface ReversibleIterable<T>
    • min

      public T min(Comparator<? super T> comparator)
      Description copied from interface: RichIterable
      Returns the minimum element out of this container based on the comparator.
      Specified by:
      min in interface RichIterable<T>
      Overrides:
      min in class AbstractRichIterable<T>
    • max

      public T max(Comparator<? super T> comparator)
      Description copied from interface: RichIterable
      Returns the maximum element out of this container based on the comparator.
      Specified by:
      max in interface RichIterable<T>
      Overrides:
      max in class AbstractRichIterable<T>
    • min

      public T min()
      Description copied from interface: RichIterable
      Returns the minimum element out of this container based on the natural order.
      Specified by:
      min in interface OrderedIterable<T>
      Specified by:
      min in interface RichIterable<T>
      Overrides:
      min in class AbstractRichIterable<T>
    • max

      public T max()
      Description copied from interface: RichIterable
      Returns the maximum element out of this container based on the natural order.
      Specified by:
      max in interface OrderedIterable<T>
      Specified by:
      max in interface RichIterable<T>
      Overrides:
      max in class AbstractRichIterable<T>
    • minBy

      public <V extends Comparable<? super V>> T minBy(Function<? super T,? extends V> function)
      Description copied from interface: RichIterable
      Returns the minimum elements out of this container based on the natural order of the attribute returned by Function.
      Specified by:
      minBy in interface RichIterable<T>
      Overrides:
      minBy in class AbstractRichIterable<T>
    • maxBy

      public <V extends Comparable<? super V>> T maxBy(Function<? super T,? extends V> function)
      Description copied from interface: RichIterable
      Returns the maximum elements out of this container based on the natural order of the attribute returned by Function.
      Specified by:
      maxBy in interface RichIterable<T>
      Overrides:
      maxBy in class AbstractRichIterable<T>
    • count

      public int count(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Return the total number of elements that answer true to the specified predicate.

      Example using a Java 8 lambda expression:

       int count =
           people.count(person -> person.getAddress().getState().getName().equals("New York"));
       

      Example using an anonymous inner class:

       int count =
           people.count(new Predicate<Person>()
           {
               public boolean accept(Person person)
               {
                   return person.getAddress().getState().getName().equals("New York");
               }
           });
       
      Specified by:
      count in interface RichIterable<T>
      Overrides:
      count in class AbstractRichIterable<T>
    • countWith

      public <P> int countWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns the total number of elements that evaluate to true for the specified predicate.
      e.g.
       return lastNames.countWith(Predicates2.equal(), "Smith");
       
      Specified by:
      countWith in interface RichIterable<T>
      Overrides:
      countWith in class AbstractRichIterable<T>
    • corresponds

      public <S> boolean corresponds(OrderedIterable<S> other, Predicate2<? super T,? super S> predicate)
      Description copied from interface: OrderedIterable
      Returns true if both OrderedIterables have the same length and predicate returns true for all corresponding elements e1 of this OrderedIterable and e2 of other. The predicate is evaluated for each element at the same position of each OrderedIterable in a forward iteration order. This is a short circuit pattern.
      Specified by:
      corresponds in interface OrderedIterable<T>
    • anySatisfy

      public boolean anySatisfy(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to true for any element of the iterable. Returns false if the iterable is empty, or if no element returned true when evaluating the predicate.
      Specified by:
      anySatisfy in interface RichIterable<T>
      Overrides:
      anySatisfy in class AbstractRichIterable<T>
    • anySatisfyWith

      public <P> boolean anySatisfyWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to true for any element of the collection, or return false. Returns false if the collection is empty.
      Specified by:
      anySatisfyWith in interface RichIterable<T>
      Overrides:
      anySatisfyWith in class AbstractRichIterable<T>
    • allSatisfy

      public boolean allSatisfy(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to true for every element of the iterable or if the iterable is empty. Otherwise, returns false.
      Specified by:
      allSatisfy in interface RichIterable<T>
      Overrides:
      allSatisfy in class AbstractRichIterable<T>
    • allSatisfyWith

      public <P> boolean allSatisfyWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to true for every element of the collection, or returns false.
      Specified by:
      allSatisfyWith in interface RichIterable<T>
      Overrides:
      allSatisfyWith in class AbstractRichIterable<T>
    • noneSatisfy

      public boolean noneSatisfy(Predicate<? super T> predicate)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to false for every element of the iterable or if the iterable is empty. Otherwise, returns false.
      Specified by:
      noneSatisfy in interface RichIterable<T>
      Overrides:
      noneSatisfy in class AbstractRichIterable<T>
    • noneSatisfyWith

      public <P> boolean noneSatisfyWith(Predicate2<? super T,? super P> predicate, P parameter)
      Description copied from interface: RichIterable
      Returns true if the predicate evaluates to false for every element of the collection, or return false. Returns true if the collection is empty.
      Specified by:
      noneSatisfyWith in interface RichIterable<T>
      Overrides:
      noneSatisfyWith in class AbstractRichIterable<T>
    • injectInto

      public <IV> IV injectInto(IV injectedValue, Function2<? super IV,? super T,? extends IV> function)
      Description copied from interface: RichIterable
      Returns the final result of evaluating function using each element of the iterable and the previous evaluation result as the parameters. The injected value is used for the first parameter of the first evaluation, and the current item in the iterable is used as the second parameter. This method is commonly called fold or sometimes reduce.
      Specified by:
      injectInto in interface RichIterable<T>
      Overrides:
      injectInto in class AbstractRichIterable<T>
    • injectInto

      public int injectInto(int injectedValue, IntObjectToIntFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final int result of evaluating function using each element of the iterable and the previous evaluation result as the parameters. The injected value is used for the first parameter of the first evaluation, and the current item in the iterable is used as the second parameter.
      Specified by:
      injectInto in interface RichIterable<T>
      Overrides:
      injectInto in class AbstractRichIterable<T>
    • injectInto

      public float injectInto(float injectedValue, FloatObjectToFloatFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final float result of evaluating function using each element of the iterable and the previous evaluation result as the parameters. The injected value is used for the first parameter of the first evaluation, and the current item in the iterable is used as the second parameter.
      Specified by:
      injectInto in interface RichIterable<T>
      Overrides:
      injectInto in class AbstractRichIterable<T>
    • distinct

      public MutableList<T> distinct()
      Description copied from interface: MutableList
      Returns a new ListIterable containing the distinct elements in this list.
      Specified by:
      distinct in interface ListIterable<T>
      Specified by:
      distinct in interface MutableList<T>
      Specified by:
      distinct in interface OrderedIterable<T>
      Specified by:
      distinct in interface ReversibleIterable<T>
      Returns:
      ListIterable of distinct elements
    • distinct

      public MutableList<T> distinct(HashingStrategy<? super T> hashingStrategy)
      Description copied from interface: MutableList
      Returns a new ListIterable containing the distinct elements in this list. Takes HashingStrategy.
      Specified by:
      distinct in interface ListIterable<T>
      Specified by:
      distinct in interface MutableList<T>
      Returns:
      ListIterable of distinct elements
    • distinctBy

      public <V> MutableList<T> distinctBy(Function<? super T,? extends V> function)
      Description copied from interface: ListIterable
      Returns a new ListIterable containing the distinct elements in this list. The specified function will be used to create a HashingStrategy to unique the elements.
      Specified by:
      distinctBy in interface ListIterable<T>
      Specified by:
      distinctBy in interface MutableList<T>
      Since:
      9.0
      See Also:
    • sumOfInt

      public long sumOfInt(IntFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final long result of evaluating function for each element of the iterable and adding the results together.
      Specified by:
      sumOfInt in interface RichIterable<T>
      Overrides:
      sumOfInt in class AbstractRichIterable<T>
    • sumOfLong

      public long sumOfLong(LongFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final long result of evaluating function for each element of the iterable and adding the results together.
      Specified by:
      sumOfLong in interface RichIterable<T>
      Overrides:
      sumOfLong in class AbstractRichIterable<T>
    • sumOfFloat

      public double sumOfFloat(FloatFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final double result of evaluating function for each element of the iterable and adding the results together. It uses Kahan summation algorithm to reduce numerical error.
      Specified by:
      sumOfFloat in interface RichIterable<T>
      Overrides:
      sumOfFloat in class AbstractRichIterable<T>
    • sumOfDouble

      public double sumOfDouble(DoubleFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final double result of evaluating function for each element of the iterable and adding the results together. It uses Kahan summation algorithm to reduce numerical error.
      Specified by:
      sumOfDouble in interface RichIterable<T>
      Overrides:
      sumOfDouble in class AbstractRichIterable<T>
    • injectInto

      public long injectInto(long injectedValue, LongObjectToLongFunction<? super T> function)
      Description copied from interface: RichIterable
      Returns the final long result of evaluating function using each element of the iterable and the previous evaluation result as the parameters. The injected value is used for the first parameter of the first evaluation, and the current item in the iterable is used as the second parameter.
      Specified by:
      injectInto in interface RichIterable<T>
      Overrides:
      injectInto in class AbstractRichIterable<T>
    • injectIntoWith

      public <IV, P> IV injectIntoWith(IV injectValue, Function3<? super IV,? super T,? super P,? extends IV> function, P parameter)
      Description copied from interface: MutableCollection
      Returns the final result of evaluating function using each element of the iterable, the previous evaluation result and the parameters. The injected value is used for the first parameter of the first evaluation, and the current item in the iterable is used as the second parameter. The parameter value is always used as the third parameter to the function call.
      Specified by:
      injectIntoWith in interface MutableCollection<T>
      Overrides:
      injectIntoWith in class AbstractMutableCollection<T>
      See Also:
    • toSortedList

      public MutableList<T> toSortedList()
      Description copied from interface: RichIterable
      Converts the collection to a MutableList implementation and sorts it using the natural order of the elements.
      Specified by:
      toSortedList in interface RichIterable<T>
    • toSet

      public MutableSet<T> toSet()
      Description copied from interface: RichIterable
      Converts the collection to a MutableSet implementation.
      Specified by:
      toSet in interface RichIterable<T>
      Overrides:
      toSet in class AbstractRichIterable<T>
    • asUnmodifiable

      public MutableList<T> asUnmodifiable()
      Description copied from interface: MutableList
      Returns an unmodifiable view of the list.
      Specified by:
      asUnmodifiable in interface MutableCollection<T>
      Specified by:
      asUnmodifiable in interface MutableList<T>
      Returns:
      an unmodifiable view of this list
      See Also:
    • asSynchronized

      public MutableList<T> asSynchronized()
      Description copied from interface: MutableCollection
      Returns a synchronized wrapper backed by this collection. This is the equivalent of using Collections.synchronizedCollection(this) only with a return type that supports the full iteration protocols available on MutableCollection. The preferred way of iterating over a synchronized collection is to use the internal iteration methods which are properly synchronized internally.
        MutableCollection synchedCollection = collection.asSynchronized();
           ...
        synchedCollection.forEach(each -> ... );
        synchedCollection.select(each -> ... );
        synchedCollection.collect(each -> ... );
       
      If you want to iterate using an imperative style, you must protect external iterators using a synchronized block. This includes explicit iterators as well as JDK 5 style for loops.

      Specified by:
      asSynchronized in interface MutableCollection<T>
      Specified by:
      asSynchronized in interface MutableList<T>
      Returns:
      a synchronized view of this collection.
      See Also:
    • sortThisByInt

      public MutableList<T> sortThisByInt(IntFunction<? super T> function)
      Specified by:
      sortThisByInt in interface MutableList<T>
    • sortThisByBoolean

      public MutableList<T> sortThisByBoolean(BooleanFunction<? super T> function)
      Specified by:
      sortThisByBoolean in interface MutableList<T>
    • sortThisByChar

      public MutableList<T> sortThisByChar(CharFunction<? super T> function)
      Specified by:
      sortThisByChar in interface MutableList<T>
    • sortThisByByte

      public MutableList<T> sortThisByByte(ByteFunction<? super T> function)
      Specified by:
      sortThisByByte in interface MutableList<T>
    • sortThisByShort

      public MutableList<T> sortThisByShort(ShortFunction<? super T> function)
      Specified by:
      sortThisByShort in interface MutableList<T>
    • sortThisByFloat

      public MutableList<T> sortThisByFloat(FloatFunction<? super T> function)
      Specified by:
      sortThisByFloat in interface MutableList<T>
    • sortThisByLong

      public MutableList<T> sortThisByLong(LongFunction<? super T> function)
      Specified by:
      sortThisByLong in interface MutableList<T>
    • sortThisByDouble

      public MutableList<T> sortThisByDouble(DoubleFunction<? super T> function)
      Specified by:
      sortThisByDouble in interface MutableList<T>
    • newEmpty

      public MutableList<T> newEmpty()
      Description copied from interface: MutableCollection
      Creates a new empty mutable version of the same collection type. For example, if this instance is a FastList, this method will return a new empty FastList. If the class of this instance is immutable or fixed size (i.e. SingletonList) then a mutable alternative to the class will be provided.
      Specified by:
      newEmpty in interface MutableCollection<T>
      Specified by:
      newEmpty in interface MutableList<T>
    • tap

      public MutableList<T> tap(Procedure<? super T> procedure)
      Description copied from interface: RichIterable
      Executes the Procedure for each element in the iterable and returns this.

      Example using a Java 8 lambda expression:

       RichIterable<Person> tapped =
           people.tap(person -> LOGGER.info(person.getName()));
       

      Example using an anonymous inner class:

       RichIterable<Person> tapped =
           people.tap(new Procedure<Person>()
           {
               public void value(Person person)
               {
                   LOGGER.info(person.getName());
               }
           });
       
      Specified by:
      tap in interface ListIterable<T>
      Specified by:
      tap in interface MutableCollection<T>
      Specified by:
      tap in interface MutableList<T>
      Specified by:
      tap in interface OrderedIterable<T>
      Specified by:
      tap in interface ReversibleIterable<T>
      Specified by:
      tap in interface RichIterable<T>
      See Also:
    • forEach

      public void forEach(int from, int to, Procedure<? super T> procedure)
      Description copied from interface: OrderedIterable
      Iterates over the section of the iterable covered by the specified inclusive indexes. The indexes are both inclusive.
      e.g.
       OrderedIterable<People> people = FastList.newListWith(ted, mary, bob, sally)
       people.forEach(0, 1, new Procedure<Person>()
       {
           public void value(Person person)
           {
                LOGGER.info(person.getName());
           }
       });
       

      This code would output ted and mary's names.

      Specified by:
      forEach in interface OrderedIterable<T>
    • indexOf

      public int indexOf(Object object)
      Description copied from interface: OrderedIterable
      Returns the index of the first occurrence of the specified item in this iterable, or -1 if this iterable does not contain the item.
      Specified by:
      indexOf in interface List<T>
      Specified by:
      indexOf in interface OrderedIterable<T>
      See Also:
    • lastIndexOf

      public int lastIndexOf(Object object)
      Description copied from interface: ListIterable
      Returns the index of the last occurrence of the specified item in this list, or -1 if this list does not contain the item.
      Specified by:
      lastIndexOf in interface List<T>
      Specified by:
      lastIndexOf in interface ListIterable<T>
    • iterator

      public Iterator<T> iterator()
      Specified by:
      iterator in interface Collection<T>
      Specified by:
      iterator in interface Iterable<T>
      Specified by:
      iterator in interface List<T>
    • listIterator

      public ListIterator<T> listIterator()
      Specified by:
      listIterator in interface List<T>
      Specified by:
      listIterator in interface ListIterable<T>
      See Also:
    • listIterator

      public ListIterator<T> listIterator(int index)
      Specified by:
      listIterator in interface List<T>
      Specified by:
      listIterator in interface ListIterable<T>
      See Also:
    • subList

      public MutableList<T> subList(int fromIndex, int toIndex)
      Specified by:
      subList in interface List<T>
      Specified by:
      subList in interface ListIterable<T>
      Specified by:
      subList in interface MutableList<T>
      See Also:
    • contains

      public boolean contains(Object object)
      Description copied from interface: RichIterable
      Returns true if the iterable has an element which responds true to element.equals(object).
      Specified by:
      contains in interface Collection<T>
      Specified by:
      contains in interface List<T>
      Specified by:
      contains in interface RichIterable<T>
      Overrides:
      contains in class AbstractRichIterable<T>
    • containsAll

      public boolean containsAll(Collection<?> source)
      Description copied from interface: RichIterable
      Returns true if all elements in source are contained in this collection.
      Specified by:
      containsAll in interface Collection<T>
      Specified by:
      containsAll in interface List<T>
      Specified by:
      containsAll in interface RichIterable<T>
      Overrides:
      containsAll in class AbstractRichIterable<T>
      See Also:
    • removeAll

      public boolean removeAll(Collection<?> collection)
      Specified by:
      removeAll in interface Collection<T>
      Specified by:
      removeAll in interface List<T>
      Overrides:
      removeAll in class AbstractMutableCollection<T>
    • retainAll

      public boolean retainAll(Collection<?> collection)
      Specified by:
      retainAll in interface Collection<T>
      Specified by:
      retainAll in interface List<T>
      Overrides:
      retainAll in class AbstractMutableCollection<T>
    • getFirst

      public T getFirst()
      Description copied from interface: RichIterable
      Returns the first element of an iterable. In the case of a List it is the element at the first index. In the case of any other Collection, it is the first element that would be returned during an iteration. If the iterable is empty, null is returned. If null is a valid element of the container, then a developer would need to check to see if the iterable is empty to validate that a null result was not due to the container being empty.

      The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so if you use this method, the first element could be any element from the Set.

      Specified by:
      getFirst in interface ListIterable<T>
      Specified by:
      getFirst in interface OrderedIterable<T>
      Specified by:
      getFirst in interface RichIterable<T>
    • getLast

      public T getLast()
      Description copied from interface: RichIterable
      Returns the last element of an iterable. In the case of a List it is the element at the last index. In the case of any other Collection, it is the last element that would be returned during an iteration. If the iterable is empty, null is returned. If null is a valid element of the container, then a developer would need to check to see if the iterable is empty to validate that a null result was not due to the container being empty.

      The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so if you use this method, the last element could be any element from the Set.

      Specified by:
      getLast in interface ListIterable<T>
      Specified by:
      getLast in interface OrderedIterable<T>
      Specified by:
      getLast in interface RichIterable<T>
    • appendString

      public void appendString(Appendable appendable, String separator)
      Description copied from interface: RichIterable
      Prints a string representation of this collection onto the given Appendable. Prints the string returned by RichIterable.makeString(String).
      Specified by:
      appendString in interface RichIterable<T>
      Overrides:
      appendString in class AbstractRichIterable<T>
    • appendString

      public void appendString(Appendable appendable, String start, String separator, String end)
      Description copied from interface: RichIterable
      Prints a string representation of this collection onto the given Appendable. Prints the string returned by RichIterable.makeString(String, String, String).
      Specified by:
      appendString in interface RichIterable<T>
      Overrides:
      appendString in class AbstractRichIterable<T>
    • groupBy

      public <V> FastListMultimap<V,T> groupBy(Function<? super T,? extends V> function)
      Description copied from interface: MutableCollection
      For each element of the iterable, the function is evaluated and the results of these evaluations are collected into a new multimap, where the transformed value is the key and the original values are added to the same (or similar) species of collection as the source iterable.

      Example using a Java 8 method reference:

       Multimap<String, Person> peopleByLastName =
           people.groupBy(Person::getLastName);
       

      Example using an anonymous inner class:

       Multimap<String, Person> peopleByLastName =
           people.groupBy(new Function<Person, String>()
           {
               public String valueOf(Person person)
               {
                   return person.getLastName();
               }
           });
       
      Co-variant example for MutableCollection:
       MutableMultimap<String, Person> peopleByLastName =
           people.groupBy(Person::getLastName);
       
      Specified by:
      groupBy in interface ListIterable<T>
      Specified by:
      groupBy in interface MutableCollection<T>
      Specified by:
      groupBy in interface MutableList<T>
      Specified by:
      groupBy in interface OrderedIterable<T>
      Specified by:
      groupBy in interface ReversibleIterable<T>
      Specified by:
      groupBy in interface RichIterable<T>
    • groupByEach

      public <V> FastListMultimap<V,T> groupByEach(Function<? super T,? extends Iterable<V>> function)
      Description copied from interface: RichIterable
      Similar to RichIterable.groupBy(Function), except the result of evaluating function will return a collection of keys for each value.
      Specified by:
      groupByEach in interface ListIterable<T>
      Specified by:
      groupByEach in interface MutableCollection<T>
      Specified by:
      groupByEach in interface MutableList<T>
      Specified by:
      groupByEach in interface OrderedIterable<T>
      Specified by:
      groupByEach in interface ReversibleIterable<T>
      Specified by:
      groupByEach in interface RichIterable<T>
    • groupByUniqueKey

      public <K> MutableMap<K,T> groupByUniqueKey(Function<? super T,? extends K> function)
      Description copied from interface: RichIterable
      For each element of the iterable, the function is evaluated, and the results of these evaluations are collected into a new map, where the transformed value is the key. The generated keys must each be unique, or else an exception is thrown.
      Specified by:
      groupByUniqueKey in interface MutableCollection<T>
      Specified by:
      groupByUniqueKey in interface RichIterable<T>
      Overrides:
      groupByUniqueKey in class AbstractMutableCollection<T>
      See Also:
    • zip

      public <S> MutableList<Pair<T,S>> zip(Iterable<S> that)
      Description copied from interface: RichIterable
      Returns a RichIterable formed from this RichIterable and another RichIterable by combining corresponding elements in pairs. If one of the two RichIterables is longer than the other, its remaining elements are ignored.
      Specified by:
      zip in interface ListIterable<T>
      Specified by:
      zip in interface MutableCollection<T>
      Specified by:
      zip in interface MutableList<T>
      Specified by:
      zip in interface OrderedIterable<T>
      Specified by:
      zip in interface ReversibleIterable<T>
      Specified by:
      zip in interface RichIterable<T>
      Type Parameters:
      S - the type of the second half of the returned pairs
      Parameters:
      that - The RichIterable providing the second half of each result pair
      Returns:
      A new RichIterable containing pairs consisting of corresponding elements of this RichIterable and that. The length of the returned RichIterable is the minimum of the lengths of this RichIterable and that.
    • zipWithIndex

      public MutableList<Pair<T,Integer>> zipWithIndex()
      Description copied from interface: RichIterable
      Zips this RichIterable with its indices.
      Specified by:
      zipWithIndex in interface ListIterable<T>
      Specified by:
      zipWithIndex in interface MutableCollection<T>
      Specified by:
      zipWithIndex in interface MutableList<T>
      Specified by:
      zipWithIndex in interface OrderedIterable<T>
      Specified by:
      zipWithIndex in interface ReversibleIterable<T>
      Specified by:
      zipWithIndex in interface RichIterable<T>
      Returns:
      A new RichIterable containing pairs consisting of all elements of this RichIterable paired with their index. Indices start at 0.
      See Also:
    • asReversed

      public ReverseIterable<T> asReversed()
      Description copied from interface: ReversibleIterable
      Returns a reversed view of this ReversibleIterable.
      Specified by:
      asReversed in interface ReversibleIterable<T>
    • asParallel

      public ParallelListIterable<T> asParallel(ExecutorService executorService, int batchSize)
      Description copied from interface: ListIterable
      Returns a parallel iterable of this ListIterable.
      Specified by:
      asParallel in interface ListIterable<T>
    • binarySearch

      public int binarySearch(T key, Comparator<? super T> comparator)
      Description copied from interface: ListIterable
      Searches for the specified object using the binary search algorithm. The list must be sorted into ascending order according to the specified comparator.
      Specified by:
      binarySearch in interface ListIterable<T>
      See Also:
    • chunk

      public RichIterable<RichIterable<T>> chunk(int size)
      Description copied from interface: RichIterable
      Partitions elements in fixed size chunks.
      Specified by:
      chunk in interface RichIterable<T>
      Overrides:
      chunk in class AbstractMutableCollection<T>
      Parameters:
      size - the number of elements per chunk
      Returns:
      A RichIterable containing RichIterables of size size, except the last will be truncated if the elements don't divide evenly.
    • take

      public MutableList<T> take(int count)
      Description copied from interface: ReversibleIterable
      Returns the first count elements of the iterable or all the elements in the iterable if count is greater than the length of the iterable.
      Specified by:
      take in interface ListIterable<T>
      Specified by:
      take in interface MutableList<T>
      Specified by:
      take in interface ReversibleIterable<T>
      Parameters:
      count - the number of items to take.
    • takeWhile

      public MutableList<T> takeWhile(Predicate<? super T> predicate)
      Description copied from interface: ListIterable
      Returns the initial elements that satisfy the Predicate. Short circuits at the first element which does not satisfy the Predicate.
      Specified by:
      takeWhile in interface ListIterable<T>
      Specified by:
      takeWhile in interface MutableList<T>
      Specified by:
      takeWhile in interface OrderedIterable<T>
      Specified by:
      takeWhile in interface ReversibleIterable<T>
    • drop

      public MutableList<T> drop(int count)
      Description copied from interface: ReversibleIterable
      Returns an iterable after skipping the first count elements or an empty iterable if the count is greater than the length of the iterable.
      Specified by:
      drop in interface ListIterable<T>
      Specified by:
      drop in interface MutableList<T>
      Specified by:
      drop in interface ReversibleIterable<T>
      Parameters:
      count - the number of items to drop.
    • dropWhile

      public MutableList<T> dropWhile(Predicate<? super T> predicate)
      Description copied from interface: ListIterable
      Returns the final elements that do not satisfy the Predicate. Short circuits at the first element which does satisfy the Predicate.
      Specified by:
      dropWhile in interface ListIterable<T>
      Specified by:
      dropWhile in interface MutableList<T>
      Specified by:
      dropWhile in interface OrderedIterable<T>
      Specified by:
      dropWhile in interface ReversibleIterable<T>
    • partitionWhile

      public PartitionMutableList<T> partitionWhile(Predicate<? super T> predicate)
      Description copied from interface: ListIterable
      Returns a Partition of the initial elements that satisfy the Predicate and the remaining elements. Short circuits at the first element which does satisfy the Predicate.
      Specified by:
      partitionWhile in interface ListIterable<T>
      Specified by:
      partitionWhile in interface MutableList<T>
      Specified by:
      partitionWhile in interface OrderedIterable<T>
      Specified by:
      partitionWhile in interface ReversibleIterable<T>