Class Combinations
- java.lang.Object
-
- org.apache.commons.math3.util.Combinations
-
- All Implemented Interfaces:
java.lang.Iterable<int[]>
public class Combinations extends java.lang.Object implements java.lang.Iterable<int[]>
- Since:
- 3.3
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Combinations.IterationOrder
Describes the type of iteration performed by theiterator
.private static class
Combinations.LexicographicComparator
Defines the lexicographic ordering of combinations, using theCombinations.LexicographicComparator.lexNorm(int[])
method.private static class
Combinations.LexicographicIterator
Lexicographic combinations iterator.private static class
Combinations.SingletonIterator
Iterator with just one element to handle degenerate cases (full array, empty array) for combination iterator.
-
Field Summary
Fields Modifier and Type Field Description private Combinations.IterationOrder
iterationOrder
Iteration order.private int
k
Number of elements in each combination.private int
n
Size of the set from which combinations are drawn.
-
Constructor Summary
Constructors Modifier Constructor Description Combinations(int n, int k)
Creates an instance whose range is the k-element subsets of {0, ..., n - 1} represented asint[]
arrays.private
Combinations(int n, int k, Combinations.IterationOrder iterationOrder)
Creates an instance whose range is the k-element subsets of {0, ..., n - 1} represented asint[]
arrays.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Comparator<int[]>
comparator()
Defines a lexicographic ordering of combinations.int
getK()
Gets the number of elements in each combination.int
getN()
Gets the size of the set from which combinations are drawn.java.util.Iterator<int[]>
iterator()
-
-
-
Field Detail
-
n
private final int n
Size of the set from which combinations are drawn.
-
k
private final int k
Number of elements in each combination.
-
iterationOrder
private final Combinations.IterationOrder iterationOrder
Iteration order.
-
-
Constructor Detail
-
Combinations
public Combinations(int n, int k)
Creates an instance whose range is the k-element subsets of {0, ..., n - 1} represented asint[]
arrays.The iteration order is lexicographic: the arrays returned by the
Ifiterator
are sorted in descending order and they are visited in lexicographic order with significance from right to left. For example,new Combinations(4, 2).iterator()
returns an iterator that will generate the following sequence of arrays on successive calls tonext()
:
[0, 1], [0, 2], [1, 2], [0, 3], [1, 3], [2, 3]
k == 0
an iterator containing an empty array is returned; ifk == n
an iterator containing [0, ..., n - 1] is returned.- Parameters:
n
- Size of the set from which subsets are selected.k
- Size of the subsets to be enumerated.- Throws:
NotPositiveException
- ifn < 0
.NumberIsTooLargeException
- ifk > n
.
-
Combinations
private Combinations(int n, int k, Combinations.IterationOrder iterationOrder)
Creates an instance whose range is the k-element subsets of {0, ..., n - 1} represented asint[]
arrays.If the
IfiterationOrder
argument is set toCombinations.IterationOrder.LEXICOGRAPHIC
, the arrays returned by theiterator
are sorted in descending order and they are visited in lexicographic order with significance from right to left. For example,new Combinations(4, 2).iterator()
returns an iterator that will generate the following sequence of arrays on successive calls tonext()
:
[0, 1], [0, 2], [1, 2], [0, 3], [1, 3], [2, 3]
k == 0
an iterator containing an empty array is returned; ifk == n
an iterator containing [0, ..., n - 1] is returned.- Parameters:
n
- Size of the set from which subsets are selected.k
- Size of the subsets to be enumerated.iterationOrder
- Specifies theiteration order
.- Throws:
NotPositiveException
- ifn < 0
.NumberIsTooLargeException
- ifk > n
.
-
-
Method Detail
-
getN
public int getN()
Gets the size of the set from which combinations are drawn.- Returns:
- the size of the universe.
-
getK
public int getK()
Gets the number of elements in each combination.- Returns:
- the size of the subsets to be enumerated.
-
iterator
public java.util.Iterator<int[]> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<int[]>
-
comparator
public java.util.Comparator<int[]> comparator()
Defines a lexicographic ordering of combinations. The returned comparator allows to compare any two combinations that can be produced by this instance'siterator
. Itscompare(int[],int[])
method will throw exceptions if passed combinations that are inconsistent with this instance:DimensionMismatchException
if the array lengths are not equal tok
,OutOfRangeException
if an element of the array is not within the interval [0,n
).
- Returns:
- a lexicographic comparator.
-
-