将字符数组复制到字符数组

问题描述 投票:0回答:4

嗨,我想将Characters数组快速复制到chars数组,我可以编写一个方法,通过将数组中的每个Charater转换为char,将Character数组复制到char数组,但是对于两个相同类型的数组,有没有比 Arrays.copyOf 更快的现成方法?

java arrays character
4个回答
4
投票
    char[] myCharArray = Arrays.stream(myCharacterArray)
            .map(ch -> ch.toString())
            .collect(Collectors.joining())
            .toCharArray();

写得很快。执行速度是否快?除非你有一个非常大的数组或经常进行这种转换,否则你不需要关心。

fozzybear的答案提出了您也可以考虑的相同变体。


2
投票

Apache Commons Lang 中有一个方法可以完全满足您的需要: http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ArrayUtils.html#toPrimitive-java.lang.Character:A-

public static char[] ArrayUtils.toPrimitive(Character[] array)

0
投票

技术上不可能,但你可能会用一种懒惰的方式将字符拆箱为字符。例如使用 Stream。 (目前这甚至可能是额外的开销。)

如果字符数组源自集合、列表,那么您只需在源头采取措施即可。尽管一切都不会很快。但字符数组并不复杂,就像将每枚硬币包裹在自己的纸中一样。


0
投票

给定一个

Character[]
数组

Character[] asciiChars = Stream.iterate(32, i -> i += 1)
                         .map(i -> Character.valueOf((char)i.intValue()))
                         .limit(95)
                         .toArray(Character[]::new);

与上述示例类似的基于

Stream
的解决方案(节省一个映射步骤)将是:

char[] chars = Stream.of(asciiChars)
               .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
               .toString()
               .toCharArray();
© www.soinside.com 2019 - 2024. All rights reserved.