Как с java 8 stream конвертировать char[] в byte[]?

Пользователь

от vicenta_kertzmann , в категории: Java , 4 месяца назад

Как с java 8 stream конвертировать char[] в byte[]?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от abel , 4 месяца назад

@vicenta_kertzmann 

Для конвертирования char[] в byte[], каждый символ в char[] должен быть преобразован в байты, используя кодировку символов. Вот пример:

 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
import java.nio.charset.StandardCharsets;
import java.util.stream.IntStream;

public class CharArrayToByteArray {
    public static byte[] convert(char[] chars) {
        return new String(chars).getBytes(StandardCharsets.UTF_8);
    }

    public static byte[] convertUsingStream(char[] chars) {
        return IntStream.range(0, chars.length)
                .mapToObj(i -> Character.toString(chars[i]))
                .reduce("", (str1, str2) -> str1 + str2)
                .getBytes(StandardCharsets.UTF_8);
    }

    public static void main(String[] args) {
        char[] chars = {'h', 'e', 'l', 'l', 'o'};

        // Using String constructor
        byte[] bytes1 = convert(chars);
        System.out.println(new String(bytes1, StandardCharsets.UTF_8)); // hello

        // Using stream
        byte[] bytes2 = convertUsingStream(chars);
        System.out.println(new String(bytes2, StandardCharsets.UTF_8)); // hello
    }
}


В этом примере мы конвертируем char[] в byte[] с использованием кодировки UTF-8. Мы можем использовать либо конструктор String для создания строки, а затем вызвать метод getBytes() для получения байтового массива, либо использовать Java 8 Stream API и преобразовать каждый символ в char[] в строку, а затем соединить строки и получить байтовый массив.