我有一个例子如下。我只想转换由“,”分隔的字符串,并将其转换为没有空字符串的长数组。 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/