Interface Bag<T>
- All Superinterfaces:
InternalIterable<T>
,Iterable<T>
,RichIterable<T>
- All Known Subinterfaces:
ImmutableBag<T>
,ImmutableBagIterable<T>
,ImmutableSortedBag<T>
,MultiReaderBag<T>
,MutableBag<T>
,MutableBagIterable<T>
,MutableSortedBag<T>
,SortedBag<T>
,UnsortedBag<T>
- All Known Implementing Classes:
AbstractBag
,AbstractHashBag
,AbstractImmutableBag
,AbstractImmutableBagIterable
,AbstractMutableBag
,AbstractMutableBagIterable
,AbstractMutableSortedBag
,HashBag
,HashBagWithHashingStrategy
,ImmutableArrayBag
,ImmutableHashBag
,MultiReaderHashBag
,SynchronizedBag
,SynchronizedSortedBag
,TreeBag
,UnmodifiableBag
,UnmodifiableSortedBag
public interface Bag<T> extends RichIterable<T>
- Since:
- 1.0
-
Method Summary
Modifier and Type Method Description default <K, V, R extends MutableMapIterable<K, V>>
RaggregateBy(Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R target)
Applies an aggregate function over the iterable grouping results into the target map based on the specific groupBy function.ListIterable<ObjectIntPair<T>>
bottomOccurrences(int count)
Returns thecount
least frequently occurring items.<V> RichIterable<V>
collectWithOccurrences(ObjectIntToObjectFunction<? super T,? extends V> function)
Iterates over the unique elements and their occurrences and collects the results of applying the specified function.default <V, R extends Collection<V>>
RcollectWithOccurrences(ObjectIntToObjectFunction<? super T,? extends V> function, R target)
Iterates over the unique elements and their occurrences and collects the results of applying the specified function into the target collection.boolean
equals(Object object)
Two bagsb1
andb2
are equal ifm1.toMapOfItemToCount().equals(m2.toMapOfItemToCount())
.void
forEachWithOccurrences(ObjectIntProcedure<? super T> procedure)
For each distinct item, with the number of occurrences, execute the specified procedure.<V> BagMultimap<V,T>
groupBy(Function<? super T,? extends V> function)
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.<V> BagMultimap<V,T>
groupByEach(Function<? super T,? extends Iterable<V>> function)
Similar toRichIterable.groupBy(Function)
, except the result of evaluating function will return a collection of keys for each value.int
hashCode()
Returns the hash code for this Bag, defined as this.toMapOfItemToCount()
.hashCode().int
occurrencesOf(Object item)
The occurrences of a distinct item in the bag.PartitionBag<T>
partition(Predicate<? super T> predicate)
Filters a collection into a PartitionedIterable based on the evaluation of the predicate.<P> PartitionBag<T>
partitionWith(Predicate2<? super T,? super P> predicate, P parameter)
Filters a collection into a PartitionIterable based on the evaluation of the predicate.default <R> R
reduceInPlace(Supplier<R> supplier, BiConsumer<R,? super T> accumulator)
This method produces the equivalent result asStream.collect(Supplier, BiConsumer, BiConsumer)
.default <R, A> R
reduceInPlace(Collector<? super T,A,R> collector)
This method produces the equivalent result asStream.collect(Collector)
.Bag<T>
reject(Predicate<? super T> predicate)
Returns all elements of the source collection that return false when evaluating of the predicate.<P> Bag<T>
rejectWith(Predicate2<? super T,? super P> predicate, P parameter)
Similar toRichIterable.reject(Predicate)
, except with an evaluation parameter for the second generic argument inPredicate2
.Bag<T>
select(Predicate<? super T> predicate)
Returns all elements of the source collection that return true when evaluating the predicate.Bag<T>
selectByOccurrences(IntPredicate predicate)
Returns all elements of the bag that have a number of occurrences that satisfy the predicate.default Bag<T>
selectDuplicates()
Returns all elements of the bag that have more than one occurrence.<S> Bag<S>
selectInstancesOf(Class<S> clazz)
Returns all elements of the source collection that are instances of the Classclazz
.SetIterable<T>
selectUnique()
Returns a set containing all elements of the bag that have exactly one occurrence.<P> Bag<T>
selectWith(Predicate2<? super T,? super P> predicate, P parameter)
Similar toRichIterable.select(Predicate)
, except with an evaluation parameter for the second generic argument inPredicate2
.int
sizeDistinct()
The size of the Bag when counting only distinct elements.default DoubleSummaryStatistics
summarizeDouble(DoubleFunction<? super T> function)
Returns the result of summarizing the value returned from applying the DoubleFunction to each element of the iterable.default DoubleSummaryStatistics
summarizeFloat(FloatFunction<? super T> function)
Returns the result of summarizing the value returned from applying the FloatFunction to each element of the iterable.default IntSummaryStatistics
summarizeInt(IntFunction<? super T> function)
Returns the result of summarizing the value returned from applying the IntFunction to each element of the iterable.default LongSummaryStatistics
summarizeLong(LongFunction<? super T> function)
Returns the result of summarizing the value returned from applying the LongFunction to each element of the iterable.Bag<T>
tap(Procedure<? super T> procedure)
Executes the Procedure for each element in the iterable and returnsthis
.ImmutableBagIterable<T>
toImmutable()
MapIterable<T,Integer>
toMapOfItemToCount()
Converts the Bag to a Map of the Item type to its count as an Integer.ListIterable<ObjectIntPair<T>>
topOccurrences(int count)
Returns thecount
most frequently occurring items.String
toStringOfItemToCount()
Returns a string representation of this bag.SetIterable<Pair<T,Integer>>
zipWithIndex()
Zips thisRichIterable
with its indices.Methods inherited from interface org.eclipse.collections.api.InternalIterable
forEach, forEachWith, forEachWithIndex
Methods inherited from interface org.eclipse.collections.api.RichIterable
aggregateBy, aggregateInPlaceBy, allSatisfy, allSatisfyWith, anySatisfy, anySatisfyWith, appendString, appendString, appendString, asLazy, chunk, collect, collect, collectBoolean, collectBoolean, collectByte, collectByte, collectChar, collectChar, collectDouble, collectDouble, collectFloat, collectFloat, collectIf, collectIf, collectInt, collectInt, collectLong, collectLong, collectShort, collectShort, collectWith, collectWith, contains, containsAll, containsAllArguments, containsAllIterable, containsBy, count, countBy, countBy, countByEach, countByEach, countByWith, countByWith, countWith, detect, detectIfNone, detectOptional, detectWith, detectWithIfNone, detectWithOptional, each, flatCollect, flatCollect, flatCollectBoolean, flatCollectByte, flatCollectChar, flatCollectDouble, flatCollectFloat, flatCollectInt, flatCollectLong, flatCollectShort, flatCollectWith, flatCollectWith, forEach, getAny, getFirst, getLast, getOnly, groupBy, groupByAndCollect, groupByEach, groupByUniqueKey, groupByUniqueKey, injectInto, injectInto, injectInto, injectInto, injectInto, into, isEmpty, makeString, makeString, makeString, max, max, maxBy, maxByOptional, maxOptional, maxOptional, min, min, minBy, minByOptional, minOptional, minOptional, noneSatisfy, noneSatisfyWith, notEmpty, reduce, reject, rejectWith, select, selectWith, size, sumByDouble, sumByFloat, sumByInt, sumByLong, sumOfDouble, sumOfFloat, sumOfInt, sumOfLong, toArray, toArray, toBag, toBiMap, toList, toMap, toMap, toSet, toSortedBag, toSortedBag, toSortedBagBy, toSortedList, toSortedList, toSortedListBy, toSortedMap, toSortedMap, toSortedMapBy, toSortedSet, toSortedSet, toSortedSetBy, toString, zip, zip, zipWithIndex
-
Method Details
-
equals
Two bagsb1
andb2
are equal ifm1.toMapOfItemToCount().equals(m2.toMapOfItemToCount())
.- Overrides:
equals
in classObject
- See Also:
Map.equals(Object)
-
hashCode
int hashCode()Returns the hash code for this Bag, defined as this.toMapOfItemToCount()
.hashCode().- Overrides:
hashCode
in classObject
- See Also:
Map.hashCode()
-
tap
Description copied from interface:RichIterable
Executes the Procedure for each element in the iterable and returnsthis
.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 interfaceRichIterable<T>
- See Also:
RichIterable.each(Procedure)
,RichIterable.forEach(Procedure)
-
select
Description copied from interface:RichIterable
Returns all elements of the source collection that return true when evaluating the predicate. This method is also commonly called filter.Example using a Java 8 lambda expression:
RichIterable<Person> selected = people.select(person -> person.getAddress().getCity().equals("London"));
Example using an anonymous inner class:
RichIterable<Person> selected = people.select(new Predicate<Person>() { public boolean accept(Person person) { return person.getAddress().getCity().equals("London"); } });
- Specified by:
select
in interfaceRichIterable<T>
-
selectWith
Description copied from interface:RichIterable
Similar toRichIterable.select(Predicate)
, except with an evaluation parameter for the second generic argument inPredicate2
.E.g. return a
Collection
of Person elements where the person has an age greater than or equal to 18 yearsExample using a Java 8 lambda expression:
RichIterable<Person> selected = people.selectWith((Person person, Integer age) -> person.getAge()>= age, Integer.valueOf(18));
Example using an anonymous inner class:
RichIterable<Person> selected = people.selectWith(new Predicate2<Person, Integer>() { public boolean accept(Person person, Integer age) { return person.getAge()>= age; } }, Integer.valueOf(18));
- Specified by:
selectWith
in interfaceRichIterable<T>
- Parameters:
predicate
- aPredicate2
to use as the select criteriaparameter
- a parameter to pass in for evaluation of the second argumentP
inpredicate
- See Also:
RichIterable.select(Predicate)
-
reject
Description copied from interface:RichIterable
Returns all elements of the source collection that return false when evaluating of the predicate. This method is also sometimes called filterNot and is the equivalent of calling iterable.select(Predicates.not(predicate)).Example using a Java 8 lambda expression:
RichIterable<Person> rejected = people.reject(person -> person.person.getLastName().equals("Smith"));
Example using an anonymous inner class:
RichIterable<Person> rejected = people.reject(new Predicate<Person>() { public boolean accept(Person person) { return person.person.getLastName().equals("Smith"); } });
- Specified by:
reject
in interfaceRichIterable<T>
- Parameters:
predicate
- aPredicate
to use as the reject criteria- Returns:
- a RichIterable that contains elements that cause
Predicate.accept(Object)
method to evaluate to false
-
rejectWith
Description copied from interface:RichIterable
Similar toRichIterable.reject(Predicate)
, except with an evaluation parameter for the second generic argument inPredicate2
.E.g. return a
Collection
of Person elements where the person has an age greater than or equal to 18 yearsExample using a Java 8 lambda expression:
RichIterable<Person> rejected = people.rejectWith((Person person, Integer age) -> person.getAge() < age, Integer.valueOf(18));
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));
- Specified by:
rejectWith
in interfaceRichIterable<T>
- Parameters:
predicate
- aPredicate2
to use as the select criteriaparameter
- a parameter to pass in for evaluation of the second argumentP
inpredicate
- See Also:
RichIterable.select(Predicate)
-
partition
Description copied from interface:RichIterable
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"); } });
- Specified by:
partition
in interfaceRichIterable<T>
-
partitionWith
Description copied from interface:RichIterable
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");
- Specified by:
partitionWith
in interfaceRichIterable<T>
-
selectInstancesOf
Description copied from interface:RichIterable
Returns all elements of the source collection that are instances of the Classclazz
.RichIterable<Integer> integers = List.mutable.with(new Integer(0), new Long(0L), new Double(0.0)).selectInstancesOf(Integer.class);
- Specified by:
selectInstancesOf
in interfaceRichIterable<T>
-
groupBy
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 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(); } });
- Specified by:
groupBy
in interfaceRichIterable<T>
-
groupByEach
Description copied from interface:RichIterable
Similar toRichIterable.groupBy(Function)
, except the result of evaluating function will return a collection of keys for each value.- Specified by:
groupByEach
in interfaceRichIterable<T>
-
zipWithIndex
SetIterable<Pair<T,Integer>> zipWithIndex()Description copied from interface:RichIterable
Zips thisRichIterable
with its indices.- Specified by:
zipWithIndex
in interfaceRichIterable<T>
- Returns:
- A new
RichIterable
containing pairs consisting of all elements of thisRichIterable
paired with their index. Indices start at 0. - See Also:
RichIterable.zip(Iterable)
-
forEachWithOccurrences
For each distinct item, with the number of occurrences, execute the specified procedure. -
occurrencesOf
The occurrences of a distinct item in the bag. -
selectByOccurrences
Returns all elements of the bag that have a number of occurrences that satisfy the predicate.- Since:
- 3.0
-
selectDuplicates
Returns all elements of the bag that have more than one occurrence.- Since:
- 9.2
-
selectUnique
SetIterable<T> selectUnique()Returns a set containing all elements of the bag that have exactly one occurrence.- Since:
- 9.2
-
topOccurrences
Returns thecount
most frequently occurring items. In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last item will be returned.- Since:
- 6.0
-
bottomOccurrences
Returns thecount
least frequently occurring items. In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last item will be returned.- Since:
- 6.0
-
sizeDistinct
int sizeDistinct()The size of the Bag when counting only distinct elements. -
toMapOfItemToCount
MapIterable<T,Integer> toMapOfItemToCount()Converts the Bag to a Map of the Item type to its count as an Integer. -
toStringOfItemToCount
String toStringOfItemToCount()Returns a string representation of this bag. The string representation consists of a list of element-count mappings.Assert.assertEquals("{1=1, 2=2, 3=3}", Bags.mutable.with(1, 2, 2, 3, 3, 3).toStringOfItemToCount());
This string representation is similar toAbstractMap.toString()
, notRichIterable.toString()
, whereas thetoString()
implementation for a Bag is consistent withRichIterable.toString()
.- Returns:
- a string representation of this bag
- Since:
- 3.0
-
toImmutable
ImmutableBagIterable<T> toImmutable() -
summarizeInt
Description copied from interface:RichIterable
Returns the result of summarizing the value returned from applying the IntFunction to each element of the iterable.IntSummaryStatistics stats = Lists.mutable.with(1, 2, 3).summarizeInt(Integer::intValue);
- Specified by:
summarizeInt
in interfaceRichIterable<T>
- Since:
- 8.0
-
summarizeFloat
Description copied from interface:RichIterable
Returns the result of summarizing the value returned from applying the FloatFunction to each element of the iterable.DoubleSummaryStatistics stats = Lists.mutable.with(1, 2, 3).summarizeFloat(Integer::floatValue);
- Specified by:
summarizeFloat
in interfaceRichIterable<T>
- Since:
- 8.0
-
summarizeLong
Description copied from interface:RichIterable
Returns the result of summarizing the value returned from applying the LongFunction to each element of the iterable.LongSummaryStatistics stats = Lists.mutable.with(1, 2, 3).summarizeLong(Integer::longValue);
- Specified by:
summarizeLong
in interfaceRichIterable<T>
- Since:
- 8.0
-
summarizeDouble
Description copied from interface:RichIterable
Returns the result of summarizing the value returned from applying the DoubleFunction to each element of the iterable.DoubleSummaryStatistics stats = Lists.mutable.with(1, 2, 3).summarizeDouble(Integer::doubleValue);
- Specified by:
summarizeDouble
in interfaceRichIterable<T>
- Since:
- 8.0
-
reduceInPlace
This method produces the equivalent result asStream.collect(Collector)
.- Specified by:
reduceInPlace
in interfaceRichIterable<T>
- Since:
- 8.0
-
reduceInPlace
This method produces the equivalent result asStream.collect(Supplier, BiConsumer, BiConsumer)
.- Specified by:
reduceInPlace
in interfaceRichIterable<T>
- Since:
- 8.0
-
collectWithOccurrences
<V> RichIterable<V> collectWithOccurrences(ObjectIntToObjectFunction<? super T,? extends V> function)Iterates over the unique elements and their occurrences and collects the results of applying the specified function.- Since:
- 10.0
-
collectWithOccurrences
default <V, R extends Collection<V>> R collectWithOccurrences(ObjectIntToObjectFunction<? super T,? extends V> function, R target)Iterates over the unique elements and their occurrences and collects the results of applying the specified function into the target collection.- Since:
- 9.1.
-
aggregateBy
default <K, V, R extends MutableMapIterable<K, V>> R aggregateBy(Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R target)Applies an aggregate function over the iterable grouping results into the target map based on the specific groupBy function. Aggregate results are allowed to be immutable as they will be replaced in place in the map. A second function specifies the initial "zero" aggregate value to work with (i.e. Integer.valueOf(0)). This method is overridden and optimized for Bag to use forEachWithOccurrences instead of forEach.- Specified by:
aggregateBy
in interfaceRichIterable<T>
- Since:
- 10.3
-