Package io.jenetics

Class CharacterChromosome

All Implemented Interfaces:
Chromosome<CharacterGene>, BaseSeq<CharacterGene>, Factory<Chromosome<CharacterGene>>, Verifiable, Serializable, CharSequence, Iterable<CharacterGene>, RandomAccess

Character chromosome which represents character sequences.
Since:
1.0
Version:
6.1
See Also:
Implementation Note:
This class is immutable and thread-safe.
  • Constructor Details

    • CharacterChromosome

      protected CharacterChromosome(ISeq<CharacterGene> genes, IntRange lengthRange)
      Create a new chromosome from the given genes array. The genes array is copied, so changes to the given genes array don't affect 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 is null.
      IllegalArgumentException - if the length of the gene array is smaller than one.
      Since:
      4.0
  • Method Details

    • charAt

      public char charAt(int index)
      Specified by:
      charAt in interface CharSequence
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: BaseSeq
      Returns true if this sequence contains no elements.
      Specified by:
      isEmpty in interface BaseSeq<CharacterGene>
      Specified by:
      isEmpty in interface CharSequence
      Returns:
      true if this sequence contains no elements
    • subSequence

      public CharacterChromosome subSequence(int start, int end)
      Specified by:
      subSequence in interface CharSequence
    • newInstance

      Description copied from interface: Chromosome
      A factory method which creates a new Chromosome of specific type and the given genes.
      Specified by:
      newInstance in interface Chromosome<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 is null.
    • newInstance

      Create a new, random chromosome.
      Specified by:
      newInstance in interface Factory<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 as char[] array, by applying the given mapper function f. 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 is null.
      IllegalArgumentException - if the length of the mapped char[] array is empty or doesn't match with the allowed length range
      Since:
      6.1
    • hashCode

      public int hashCode()
    • equals

      public boolean equals(Object obj)
    • toString

      public String toString()
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class AbstractChromosome<CharacterGene>
    • toArray

      public char[] toArray(char[] array)
      Returns a char array containing all the elements in this chromosome in a 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 chromosome 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 given array is null
      Since:
      3.0
    • toArray

      public char[] toArray()
      Returns a char array containing all the elements in this chromosome in a 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 the validCharacters 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 the validCharacters is null.
      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 the CharacterGene.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 the length is smaller than one.
    • of

      public static CharacterChromosome of(CharSeq validCharacters, int length)
      Create a new chromosome with the validCharacters char set as valid characters.
      Parameters:
      validCharacters - the valid characters for this chromosome.
      length - the length of the new chromosome.
      Returns:
      a new CharacterChromosome with the given parameter
      Throws:
      NullPointerException - if the validCharacters is null.
      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 the CharacterGene.DEFAULT_CHARACTERS char set as valid characters.
      Parameters:
      length - the length of the new chromosome.
      Returns:
      a new CharacterChromosome with the given parameter
      Throws:
      IllegalArgumentException - if the length 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