将 int 数组转换为 char 数组
Converting int array to char array
是否可以 cast
一个 int array
到一个 char array
?如果是 - how
?
我目前正在做一个项目,我需要 create an char array
包含 alphabet
。 My 当前 code
创建一个 int array
(应该是 converted
到 char array
- 在一行中! ):
return IntStream.range('a', 'z' + 1).toArray();
那么让我们保持一行:
return IntStream.range('a', 'z' + 1).mapToObj(i -> Character.valueOf((char) i)).toArray(Character[]::new);
这从 IntStream
转换为 Stream<Character>
。请记住,就许多计算而言,字符和整数本质上是相同的,因此这一步可能是不必要的(特别是对于比较)。
编辑:
修复了上面的行,使其正常运行,有更好的解决方案,但我仍在尝试再次找到它。它目前 returns 一个 Character[]
数组。
没有 1 行限制,只需重新制作数组就很简单,将 a
视为您的 0 索引。
char[] back = new char[('z' + 1) - 'a'];
IntStream.range('a', 'z' + 1).forEach(i -> back[i - 'a'] = (char) i);
return back;
不能将 int 数组转换为 char 数组,因为类型完全不同。
有 2 个可能的选项:
1) 创建一个 char 数组并从 int 数组中复制每个值
2)使用通用列表或集合。您可以简单地将其用于铸造
是的,我们缺少生成 char 数组的流方法。也许是整个 CharStream class。无论如何,不,你不能在 int[]
和 char[]
之间转换。
与此同时,它排起了长队,但它有效:
return IntStream.rangeClosed('a', 'z')
.mapToObj(c -> Character.toString((char) c))
.collect(Collectors.joining())
.toCharArray();
这给出了一个 char[]
包含
[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
从 Java-11 开始,您可以使用 .mapToObj(Character::toString)
而不是 .mapToObj(c -> Character.toString((char) c))
,所以你的整体代码归结为:
return IntStream.rangeClosed('a', 'z')
.mapToObj(Character::toString)
.collect(Collectors.joining())
.toCharArray();
是否可以 cast
一个 int array
到一个 char array
?如果是 - how
?
我目前正在做一个项目,我需要 create an char array
包含 alphabet
。 My 当前 code
创建一个 int array
(应该是 converted
到 char array
- 在一行中! ):
return IntStream.range('a', 'z' + 1).toArray();
那么让我们保持一行:
return IntStream.range('a', 'z' + 1).mapToObj(i -> Character.valueOf((char) i)).toArray(Character[]::new);
这从 IntStream
转换为 Stream<Character>
。请记住,就许多计算而言,字符和整数本质上是相同的,因此这一步可能是不必要的(特别是对于比较)。
编辑:
修复了上面的行,使其正常运行,有更好的解决方案,但我仍在尝试再次找到它。它目前 returns 一个 Character[]
数组。
没有 1 行限制,只需重新制作数组就很简单,将 a
视为您的 0 索引。
char[] back = new char[('z' + 1) - 'a'];
IntStream.range('a', 'z' + 1).forEach(i -> back[i - 'a'] = (char) i);
return back;
不能将 int 数组转换为 char 数组,因为类型完全不同。
有 2 个可能的选项:
1) 创建一个 char 数组并从 int 数组中复制每个值 2)使用通用列表或集合。您可以简单地将其用于铸造
是的,我们缺少生成 char 数组的流方法。也许是整个 CharStream class。无论如何,不,你不能在 int[]
和 char[]
之间转换。
与此同时,它排起了长队,但它有效:
return IntStream.rangeClosed('a', 'z')
.mapToObj(c -> Character.toString((char) c))
.collect(Collectors.joining())
.toCharArray();
这给出了一个 char[]
包含
[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
从 Java-11 开始,您可以使用 .mapToObj(Character::toString)
而不是 .mapToObj(c -> Character.toString((char) c))
,所以你的整体代码归结为:
return IntStream.rangeClosed('a', 'z')
.mapToObj(Character::toString)
.collect(Collectors.joining())
.toCharArray();