Convert a String to Character array in Java
This post will discuss how to convert a string to a Character array in Java.
1. Naive solution
A naive solution is to use a regular for-loop to read all the characters in the string and assign them to a Character array one by one.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.util.Arrays; class Main { // Naive method to convert a string to a `Character` array public static Character[] toCharacterArray(String str) { if (str == null) { return null; } Character[] chars = new Character[str.length()]; for (int i = 0; i < str.length() ; i++) { chars[i] = str.charAt(i); } return chars; } public static void main(String[] args) { String str = "Java"; Character[] chars = toCharacterArray(str); System.out.println(Arrays.toString(chars)); // [J, a, v, a] } } |
2. Using Java 8
Java 8 does not provide any char stream, but we can get an IntStream (a stream of ints) of characters using the String.chars() method when dealing with strings.
After obtaining the IntStream of characters, we need to box it to Stream<Character>. We can do this by casting char using lambda ch -> (char) ch inside mapToObj(), which will then automatically boxed to Character.
Finally, the toArray(T[]) method can be used to dump the Stream into a newly allocated Character array.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.Arrays; class Main { public static Character[] toCharacterArray(String str) { if (str == null) { return null; } return str.chars() // IntStream .mapToObj(ch -> (char) ch) // Stream<Character> .toArray(Character[]::new); } public static void main(String[] args) { String str = "Java"; Character[] chars = toCharacterArray(str); System.out.println(Arrays.toString(chars)); // [J, a, v, a] } } |
Another option to get an IntStream is to use the String.codePoints() method, as shown below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.Arrays; class Main { public static Character[] toCharacterArray(String str) { if (str == null) { return null; } return str.codePoints() // IntStream .mapToObj(ch -> (char) ch) // Stream<Character> .toArray(Character[]::new); } public static void main(String[] args) { String str = "Java"; Character[] chars = toCharacterArray(str); System.out.println(Arrays.toString(chars)); // [J, a, v, a] } } |
This is equivalent to:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.Arrays; import java.util.stream.IntStream; class Main { public static Character[] toCharacterArray(String str) { if (str == null) { return null; } return IntStream.range(0, str.length()).mapToObj(str::charAt) .toArray(Character[]::new); } public static void main(String[] args) { String str = "Java"; Character[] chars = toCharacterArray(str); System.out.println(Arrays.toString(chars)); // [J, a, v, a] } } |
3. Using Apache Commons Lang
Apache Commons Lang ArrayUtils class provides the toObject() method, which can convert a char array to Character array. To get a char array from string, we can use String.toCharArray().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import org.apache.commons.lang3.ArrayUtils; import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; Character[] chars = ArrayUtils.toObject(str.toCharArray()); System.out.println(Arrays.toString(chars)); // [J, a, v, a] } } |
4. Convert string to list of Character
Sometimes we want to convert string to List<Character>. We can use Guava’s Lists.charactersOf() to do so.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import com.google.common.collect.Lists; import java.util.List; class Main { public static void main(String[] args) { String str = "Java"; List<Character> chars = Lists.charactersOf(str); System.out.println(chars); // [J, a, v, a] } } |
That’s all about converting a String to a Character array in Java.
Related Post:
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)