Kotlin - Ranges

In this article, you will learn about the concept of ranges in Kotlin

Introduction

In this part, we are going to learn about Kotlin Ranges. Those who are new to Kotlin and willing to learn can go through this article series starting here: Introduction to Kotlin.

Kotlin Ranges

Kotlin range is defined from the start value to the end value. The range is created with the ". ." operator. The double dots define the value which comes inside the defined range.

Example

 

  1. val aToZ = 'a'..'z'  
  2.   
  3. val oneToNine = 1..9  

 

Integral Type Ranges

Integral type ranges are the ability to use the for loop. The compiler is used to convert this integral type range.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. for (a in 1..5){  
  4.   
  5. print(a )  
  6.   
  7. }  
  8.   
  9. println()  
  10.   
  11. for(x in 'a'..'f'){  
  12.   
  13. print(x )  
  14.   
  15. }  
  16.   
  17. println()  
  18.   
  19. val range = 1.0..5.0  
  20.   
  21. println(range)  
  22.   
  23. println("3.14 in range is ${3.14 in range}")  
  24.   
  25. }  

 

Output

12345

abcdef

1.0..5.0

3.14 in the range is true.

Until Range

The until() keyword is used to exclude the last element. It ranges from start to 1 less than an end.

Example

 

  1. for (a in 1 until 6){  
  2.   
  3. print(a )  
  4.   
  5. }  

 

Output

12345

Kotlin range of integer

Kotlin range of integer range using downTo(), downTo, and rangeTo().

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. for (x in 1..6)  
  4.   
  5. print(x)  
  6.   
  7. println()  
  8.   
  9. for (x in 6 downTo 1)  
  10.   
  11. print(x)  
  12.   
  13. println()  
  14.   
  15. for (x in 1.rangeTo(6))  
  16.   
  17. print(x)  
  18.   
  19. println()  
  20.   
  21. for (x in 6.downTo(1))  
  22.   
  23. print(x)  
  24.   
  25. println()  
  26.   
  27. }  

 

Output

123456

654321

123456

654321

Kotlin range of characters

Kotlin range of character using char data types.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. (x in 'a'..'d')  
  4.   
  5. print("$x ")  
  6.   
  7. println()  
  8.   
  9. for (x in 'd' downTo 'a')  
  10.   
  11. print("$x ")  
  12.   
  13. }  

 

Output

abcd

dcba

Kotlin range step

Kotlin range step is used to iterate the range in the interval of an int value.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. for (x in 1..12 step 2)  
  4.   
  5. print("$x ")  
  6.   
  7. println()  
  8.   
  9. for (x in 12 downTo 1 step 3)  
  10.   
  11. print("$x ")  
  12.   
  13. }  

 

Output

1 3 5 7 9 11

12 9 6 3

Kotlin range iterator

An iterator() method is used to iterate the range value. It uses the Next() method to check the next element in the range and next() method returns the next element of the range.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. val chars = ('a'..'d')  
  4.   
  5. val it = chars.iterator()  
  6.   
  7. while (it.hasNext()) {  
  8.   
  9. val x = it.next()  
  10.   
  11. print("$x ")  
  12.   
  13. }  
  14.   
  15. }  

 

Output

a b c d

Kotlin Utility Functions

Kotlin utility functions have several standard library functions to use in Kotlin Ranges.

The list of utility functions given below:

rangeTo()

downTo()

reversed()

step()

Kotlin rangeTo()

The rangeTo() is used to return the value from start to end in increasing order method. The rangeTo() is integral types which calls the constructors of class.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. var range: IntRange = 1.rangeTo(6)  
  4.   
  5. println("Printing value: 1.rangeTo(6)")  
  6.   
  7. for (x in range){  
  8.   
  9. print("$x ")  
  10.   
  11. }  
  12.   
  13. println("")  
  14.   
  15. var range2: IntRange = IntRange(1,6)  
  16.   
  17. println("Printing value: IntRange(1,6)")  
  18.   
  19. for (x in range2){  
  20.   
  21. print("$x ")  
  22.   
  23. }  
  24.   
  25. }  

 

Output

Printing value: 1.rangeTo(6)

1 2 3 4 5 6

Printing value: IntRange(1,6)

1 2 3 4 5 6

Kotlin downTo()

The downTo() is used to return the value in decreasing order method. The downTo() is defined for a pair of integral types.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. println("Range 1")  
  4.   
  5. var range1 = 6 downTo 1  
  6.   
  7. for (x in range1){  
  8.   
  9. print("$x ")  
  10.   
  11. }  
  12.   
  13. println()  
  14.   
  15. println("Range 2")  
  16.   
  17. var range2: IntProgression = 6.downTo(1)  
  18.   
  19. for (x in range2){  
  20.   
  21. print("$x ")  
  22.   
  23. }  
  24.   
  25. println()  
  26.   
  27. println("Range 3")  
  28.   
  29. var range3: IntProgression = IntProgression.fromClosedRange(6,1,-1)  
  30.   
  31. for (x in range3){  
  32.   
  33. print("$x ")  
  34.   
  35. }  
  36.   
  37. }  

 

Output

Range 1

6 5 4 3 2 1

Range 2

6 5 4 3 2 1

Range 3

6 5 4 3 2 1

Kotlin reversed()

The reversed() is used to return the reversed order of the given range type.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. println("Reversed 1")  
  4.   
  5. var range1 = 1..6  
  6.   
  7. for (x in range1.reversed()){  
  8.   
  9. print("$x ")  
  10.   
  11. }  
  12.   
  13. println()  
  14.   
  15. println("Reversed 2")  
  16.   
  17. var range2: IntRange = IntRange(1,6)  
  18.   
  19. for (x in range2.reversed()){  
  20.   
  21. print("$x ")  
  22.   
  23. }  
  24.   
  25. println()  
  26.   
  27. println("Reversed 3")  
  28.   
  29. var range3 = IntProgression.fromClosedRange(6,1,-1)  
  30.   
  31. for (x in range3.reversed()){  
  32.   
  33. print("$x ")  
  34.   
  35. }  
  36.   
  37. println()  
  38.   
  39. println("Reversed 4")  
  40.   
  41. var range4: IntProgression = IntProgression.fromClosedRange(6,1,-2)  
  42.   
  43. for (x in range4.reversed()){  
  44.   
  45. print("$x ")  
  46.   
  47. }  
  48.   
  49. }  

 

Output

Reversed 1

6 5 4 3 2 1

Reversed 2

6 5 4 3 2 1

Reversed 3

1 2 3 4 5 6

Reversed 4

1 3 5

Kotlin step()

The step() is used to return the range value in the interval of given step value. A step value always takes a positive parameter. The negative step value generates the Illegal Argument Exception.

Example

 

  1. fun main(args: Array<String>) {  
  2.   
  3. val range: IntRange = 1..10  
  4.   
  5. println("Print range value with step 2:")  
  6.   
  7. for(x in range step (2)){  
  8.   
  9. print("$x ")  
  10.   
  11. }  
  12.   
  13. println("")  
  14.   
  15. println("Print range value with step 3:")  
  16.   
  17. for(x in range step 3){  
  18.   
  19. print("$x ")  
  20.   
  21. }  
  22.   
  23. val first=((range step 2).first)  
  24.   
  25. val last=((range step 2).last)  
  26.   
  27. println("")  
  28.   
  29. println("First value of interval: $first")  
  30.   
  31. println("Last value of interval: $last ")  
  32.   
  33. }  

 

Output

Print range value with step 2:

1 3 5 7 9

Print range value with step 3:

1 4 7 10

First value of interval: 1

Last value of interval: 9

Conclusion

Kotlin is quickly becoming a complete modern programming language. In this article, we learned about Ranges in Kotlin. In the next part of this series, we will learn about Java Interoperability and Regex. Stay Tuned!