Package io.jenetics
Class CharacterChromosome
- java.lang.Object
-
- io.jenetics.AbstractChromosome<G>
-
- io.jenetics.CharacterChromosome
-
- All Implemented Interfaces:
Chromosome<CharacterGene>
,BaseSeq<CharacterGene>
,Factory<Chromosome<CharacterGene>>
,Verifiable
,Serializable
,CharSequence
,Iterable<CharacterGene>
,RandomAccess
public class CharacterChromosome extends AbstractChromosome<G> implements CharSequence, Serializable
CharacterChromosome which represents character sequences.- Since:
- 1.0
- Version:
- 6.1
- See Also:
CharacterGene
, Serialized Form- Implementation Note:
- This class is immutable and thread-safe.
-
-
Field Summary
-
Fields inherited from class io.jenetics.AbstractChromosome
_genes, _valid
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
CharacterChromosome(ISeq<CharacterGene> genes, IntRange lengthRange)
Create a new chromosome from the givengenes
array.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description char
charAt(int index)
boolean
equals(Object obj)
int
hashCode()
boolean
isEmpty()
Returnstrue
if this sequence contains no elements.IntRange
lengthRange()
Return the allowed length range of the chromosome.CharacterChromosome
map(Function<? super char[],char[]> f)
Maps the gene alleles of this chromosome, given aschar[]
array, by applying the given mapper functionf
.CharacterChromosome
newInstance()
Create a new, random chromosome.CharacterChromosome
newInstance(ISeq<CharacterGene> genes)
A factory method which creates a newChromosome
of specific type and the givengenes
.static CharacterChromosome
of(int length)
Create a new chromosome with theCharacterGene.DEFAULT_CHARACTERS
char set as valid characters.static CharacterChromosome
of(CharSeq validCharacters, int length)
Create a new chromosome with thevalidCharacters
char set as valid characters.static CharacterChromosome
of(CharSeq validCharacters, IntRange lengthRange)
Create a new chromosome with thevalidCharacters
char set as valid characters.static CharacterChromosome
of(IntRange lengthRange)
Create a new chromosome with theCharacterGene.DEFAULT_CHARACTERS
char set as valid characters.static CharacterChromosome
of(String alleles)
Create a new chromosome from the given genes (given as string).static CharacterChromosome
of(String alleles, CharSeq validChars)
Create a new chromosome from the given genes (given as string).CharacterChromosome
subSequence(int start, int end)
char[]
toArray()
Returns an char array containing all of the elements in this chromosome in proper sequence.char[]
toArray(char[] array)
Returns an char array containing all of the elements in this chromosome in proper sequence.String
toString()
-
Methods inherited from class io.jenetics.AbstractChromosome
get, isValid, length
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface io.jenetics.util.BaseSeq
iterator, listIterator, nonEmpty, spliterator, stream
-
Methods inherited from interface java.lang.CharSequence
chars, codePoints, length
-
Methods inherited from interface io.jenetics.Chromosome
as, gene
-
-
-
-
Constructor Detail
-
CharacterChromosome
protected CharacterChromosome(ISeq<CharacterGene> genes, IntRange lengthRange)
Create a new chromosome from the givengenes
array. The genes array is copied, so changes to the given genes array doesn't effect the genes of this chromosome.- Parameters:
genes
- the genes that form the chromosome.lengthRange
- the allowed length range of the chromosome.- Throws:
NullPointerException
- if the given gene array isnull
.IllegalArgumentException
- if the length of the gene array is smaller than one.- Since:
- 4.0
-
-
Method Detail
-
charAt
public char charAt(int index)
- Specified by:
charAt
in interfaceCharSequence
-
isEmpty
public boolean isEmpty()
Description copied from interface:BaseSeq
Returnstrue
if this sequence contains no elements.- Specified by:
isEmpty
in interfaceBaseSeq<CharacterGene>
- Returns:
true
if this sequence contains no elements
-
subSequence
public CharacterChromosome subSequence(int start, int end)
- Specified by:
subSequence
in interfaceCharSequence
-
newInstance
public CharacterChromosome newInstance(ISeq<CharacterGene> genes)
Description copied from interface:Chromosome
A factory method which creates a newChromosome
of specific type and the givengenes
.- Specified by:
newInstance
in interfaceChromosome<CharacterGene>
- Parameters:
genes
- the genes of the new chromosome. The given genes array is not copied.- Returns:
- A new
Chromosome
of the same type with the given genes. - Throws:
NullPointerException
- if the given gene array isnull
.
-
newInstance
public CharacterChromosome newInstance()
Create a new, random chromosome.- Specified by:
newInstance
in interfaceFactory<Chromosome<CharacterGene>>
- Returns:
- a new instance of type T
-
map
public CharacterChromosome map(Function<? super char[],char[]> f)
Maps the gene alleles of this chromosome, given aschar[]
array, by applying the given mapper functionf
. The mapped gene values are then wrapped into a newly created chromosome.final CharacterChromosome chromosome = ...; final CharacterChromosome uppercase = chromosome.map(Main::uppercase); static int[] uppercase(final int[] values) { for (int i = 0; i < values.length; ++i) { values[i] = Character.toUpperCase(values[i]); } return values; }
- Parameters:
f
- the mapper function- Returns:
- a newly created chromosome with the mapped gene values
- Throws:
NullPointerException
- if the mapper function isnull
.IllegalArgumentException
- if the length of the mappedchar[]
array is empty or doesn't match with the allowed length range- Since:
- 6.1
-
hashCode
public int hashCode()
-
toString
public String toString()
- Specified by:
toString
in interfaceCharSequence
- Overrides:
toString
in classAbstractChromosome<CharacterGene>
-
toArray
public char[] toArray(char[] array)
Returns an char array containing all of the elements in this chromosome in proper sequence. If the chromosome fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the length of this chromosome.- Parameters:
array
- the array into which the elements of this chromosomes are to be stored, if it is big enough; otherwise, a new array is allocated for this purpose.- Returns:
- an array containing the elements of this chromosome
- Throws:
NullPointerException
- if the givenarray
isnull
- Since:
- 3.0
-
toArray
public char[] toArray()
Returns an char array containing all of the elements in this chromosome in proper sequence.- Returns:
- an array containing the elements of this chromosome
- Since:
- 3.0
-
of
public static CharacterChromosome of(CharSeq validCharacters, IntRange lengthRange)
Create a new chromosome with thevalidCharacters
char set as valid characters.- Parameters:
validCharacters
- the valid characters for this chromosome.lengthRange
- the allowed length range of the chromosome.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
NullPointerException
- if thevalidCharacters
isnull
.IllegalArgumentException
- if the length of the gene sequence is empty, doesn't match with the allowed length range, the minimum or maximum of the range is smaller or equal zero or the given range size is zero.- Since:
- 4.3
-
of
public static CharacterChromosome of(IntRange lengthRange)
Create a new chromosome with theCharacterGene.DEFAULT_CHARACTERS
char set as valid characters.- Parameters:
lengthRange
- the allowed length range of the chromosome.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
IllegalArgumentException
- if thelength
is smaller than one.
-
of
public static CharacterChromosome of(CharSeq validCharacters, int length)
Create a new chromosome with thevalidCharacters
char set as valid characters.- Parameters:
validCharacters
- the valid characters for this chromosome.length
- thelength
of the new chromosome.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
NullPointerException
- if thevalidCharacters
isnull
.IllegalArgumentException
- if the length of the gene sequence is empty, doesn't match with the allowed length range, the minimum or maximum of the range is smaller or equal zero or the given range size is zero.- Since:
- 4.3
-
of
public static CharacterChromosome of(int length)
Create a new chromosome with theCharacterGene.DEFAULT_CHARACTERS
char set as valid characters.- Parameters:
length
- thelength
of the new chromosome.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
IllegalArgumentException
- if thelength
is smaller than one.
-
of
public static CharacterChromosome of(String alleles, CharSeq validChars)
Create a new chromosome from the given genes (given as string).- Parameters:
alleles
- the character genes.validChars
- the valid characters.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
IllegalArgumentException
- if the genes string is empty.
-
of
public static CharacterChromosome of(String alleles)
Create a new chromosome from the given genes (given as string).- Parameters:
alleles
- the character genes.- Returns:
- a new
CharacterChromosome
with the given parameter - Throws:
IllegalArgumentException
- if the genes string is empty.
-
lengthRange
public IntRange lengthRange()
Return the allowed length range of the chromosome. The minimum value of the range is included and the maximum value is excluded.- Returns:
- the allowed length range of the chromosome
-
-