gpt4 book ai didi

java 8 - Arrays.stream().filter 过滤掉空字符串并转换为数组

转载 作者:行者123 更新时间:2023-12-01 06:49:15 28 4
gpt4 key购买 nike

我有一个例子如下。我只想转换由“,”分隔的字符串,并将其转换为没有空字符串的长数组。 productIdParams 包含 [1],但是当我执行此操作时,出现异常。

java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at java.util.stream.SpinedBuffer.copyInto(SpinedBuffer.java:194) at java.util.stream.Nodes$SpinedNodeBuilder.copyInto(Nodes.java:1290) at java.util.stream.SpinedBuffer.asArray(SpinedBuffer.java:215) at java.util.stream.Nodes$SpinedNodeBuilder.asArray(Nodes.java:1296) at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:439)

String test = "1,";
String[] productIdParams = Iterables.toArray(com.google.common.base.Splitter.on(",").omitEmptyStrings().split(test), String.class);
try {
Long[] productIds = Arrays.stream(productIdParams).filter(productId -> !productId.isEmpty()).toArray(Long[]::new);
System.out.println(productIds[0]);
} catch (Exception e) {
e.printStackTrace();
}

有什么问题吗?

谢谢。

最佳答案

您正在尝试从 String[] 生成 Long[],这是不允许的。相反,请使用 map 中间操作将 String 值转换为 Long 对象。

Arrays.stream(productIdParams)
.filter(productId -> !productId.isEmpty())
.map(Long::parseLong)
.toArray(Long[]::new);

关于java 8 - Arrays.stream().filter 过滤掉空字符串并转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com