Java 从字符列表“list”转换为字符数组“char[]”
在Java中,将列表转换为char数组char[]chars的方法是什么 我希望这样,以便以后可以使用Stringchars创建字符串。 我们有使用流的快捷方式吗 我看到我们可以从List或Double和Long转换为int[]或Double[]和Long[],但是类似的功能不适用于char,因为我们没有对应于IntStream的char 请建议我们是否有一个快速的方法来做到这一点 我目前的代码是: 新StringGetCharrayCharlist 私有静态字符[]getCharArrayList字符列表{ char[]charArray=新字符[charList.size]; 对于int i=0;iJava 从字符列表“list”转换为字符数组“char[]”,java,list,java-8,char,java-stream,Java,List,Java 8,Char,Java Stream,在Java中,将列表转换为char数组char[]chars的方法是什么 我希望这样,以便以后可以使用Stringchars创建字符串。 我们有使用流的快捷方式吗 我看到我们可以从List或Double和Long转换为int[]或Double[]和Long[],但是类似的功能不适用于char,因为我们没有对应于IntStream的char 请建议我们是否有一个快速的方法来做到这一点 我目前的代码是: 新StringGetCharrayCharlist 私有静态字符[]getCharArrayLi
list.stream().map(Object::toString).collect(Collectors.joining());
详细答案
我知道我们可以从列表中转换。。。但类似的功能并不适用
可用于char,因为我们没有用于IntStream的char等价物
是的,因为您可以将内置方法mapToInt和toArray结合起来,免费获得转换。同样的情况也不适用于char类型。尽管如此,您仍然可以使用泛型,转换为字符串,然后再转换为字符数组:
list.stream().map(Object::toString).collect(Collectors.joining()).toCharArray();
我希望这样,以便以后可以使用Stringchars创建字符串。
我们有使用流的快捷方式吗
那为什么不直接做呢
String collect = list.stream()
.map(String::valueOf)
.collect(Collectors.joining());
运行示例:
public static void main(String[] args) {
List<Character> list = List.of('H', 'e','l','l','o');
String collect = list.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println(collect);
}
TL;博士
例如,您可以通过以下方式完成:
list.stream.mapObject::toString.collectCollectors.joining.toCharArray
但是,如果要将其作为字符串,请直接执行以下操作:
list.stream().map(Object::toString).collect(Collectors.joining());
详细答案
我知道我们可以从列表中转换。。。但类似的功能并不适用
可用于char,因为我们没有用于IntStream的char等价物
是的,因为您可以将内置方法mapToInt和toArray结合起来,免费获得转换。同样的情况也不适用于char类型。尽管如此,您仍然可以使用泛型,转换为字符串,然后再转换为字符数组:
list.stream().map(Object::toString).collect(Collectors.joining()).toCharArray();
我希望这样,以便以后可以使用Stringchars创建字符串。
我们有使用流的快捷方式吗
那为什么不直接做呢
String collect = list.stream()
.map(String::valueOf)
.collect(Collectors.joining());
运行示例:
public static void main(String[] args) {
List<Character> list = List.of('H', 'e','l','l','o');
String collect = list.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println(collect);
}
请注意,这是在构造一个字符串,该字符串由Java内部的char[]支持。来自托克拉里的文件
将此字符串转换为新的字符数组
返回:一个新的
已分配的字符数组,其长度为该字符串的长度
其内容初始化为包含字符序列
由这个字符串表示
因此,这将在内部创建两个char[]一个作为支持字符串,ToCharray返回一个具有相同内容的新数组
请注意,这是在构造一个字符串,该字符串由Java内部的char[]支持。来自托克拉里的文件
将此字符串转换为新的字符数组
返回:一个新的
已分配的字符数组,其长度为该字符串的长度
其内容初始化为包含字符序列
由这个字符串表示
因此,这将在内部创建两个char[]一个作为支持字符串,ToCharray返回一个具有相同内容的新数组。您可以在没有流的情况下执行此操作。看看类列表的方法。这正是你想要的。您需要做的只是:
Character[] charArray = charList.toArray(new Character[charList.size()]);
你可以不用溪流。看看类列表的方法。这正是你想要的。您需要做的只是:
Character[] charArray = charList.toArray(new Character[charList.size()]);
没有特殊的流方法可以将列表转换为原语数组char[],但您可以使用IntStream自己进行转换,例如:
列表=a、b、c的列表;
char[]chars=新字符[list.size];
IntStream.range0,list.size.forEachi->chars[i]=list.geti;
System.out.printlnArrays.toStringchars;//[甲、乙、丙]
没有特殊的流方法可以将列表转换为原语数组char[],但您可以使用IntStream自己进行转换,例如:
列表=a、b、c的列表;
char[]chars=新字符[list.size];
IntStream.range0,list.size.forEachi->chars[i]=list.geti;
System.out.printlnArrays.toStringchars;//[甲、乙、丙]
将每个字符转换为字符串的速度非常慢
所以
int[] tmp = list.stream().mapToInt( c -> c ).toArray();
仅转换为字符串一次
String rslt = new String( tmp, 0, tmp.length );
如果您也需要字符[]
有人需要列表做什么?将每个字符转换为字符串的速度非常慢
所以
int[] tmp = list.stream().mapToInt( c -> c ).toArray();
仅转换为字符串一次
String rslt = new String( tmp, 0, tmp.length );
如果您也需要字符[]
有人需要列表做什么?你能试着编译一下吗?字符[]与字符[]不同。只是一个简单的打字错误。改变答案。但该方法仍然是正确的使用方法。将charList.size传递给数组有助于提高性能,这是一个根深蒂固的神话。事实上,charList.toArraynew
字符[0]更有效。如果你对细节感兴趣,你可以阅读@Holger我不明白为什么有人会有一份清单。想法?@AniketSahrawat你必须问提问者。你能试着整理一下吗?字符[]与字符[]不同。只是一个简单的打字错误。改变答案。但该方法仍然是正确的使用方法。将charList.size传递给数组有助于提高性能,这是一个根深蒂固的神话。事实上,charList.toArraynew字符[0]更有效。如果你对细节感兴趣,你可以阅读@Holger我不明白为什么有人会有一份清单。想法?@AniketSahrawat你必须问提问者。步骤的.mapString::valueOf已过时。由于OP说“我想要这个,这样以后我就可以创建一个字符串了”,所以只要省略toCharArray并已经有了字符串,这个解决方案就可以变得更加高效。步骤的.mapString::valueOf已经过时了。既然OP说“我想要这个,这样以后我就可以创建一个字符串”,那么这个解决方案可以通过省略toCharArray并已经有了字符串而变得更加有效。