【问题标题】:How to convert Set<String> to Long[] array using Java8 Lambda expressions如何使用 Java8 Lambda 表达式将 Set<String> 转换为 Long[] 数组
【发布时间】:2019-02-06 13:19:20
【问题描述】:

谁能告诉,如何使用 Java 将 Set of String values 转换为 Long Array values

String singleId = "8432";
String[] ids = new String[]{"4562", "8432"};
Set<String> setIds = new HashSet<String>();
if (setIds != null && ids.length > 0){
    for (String id : ids){
        setIds.add(id);
    }
    setIds.add(singleId);
} else {
    setIds.add(singleId);
}
Long[] longIds = setIds.stream().toArray(Long[]::new);
System.out.println(longIds);

遇到错误

Exception in thread "main" java.lang.ArrayStoreException: java.lang.String
at java.util.stream.Nodes$FixedNodeBuilder.accept(Nodes.java:1222)
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545)
at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:438)
at com.java.collections.set.FilterDuplicatesBySet.main(FilterDuplicatesBySet.java:40)

【问题讨论】:

    标签: java lambda collections java-8 arraystoreexception


    【解决方案1】:
     setIds.stream()
           .map(Long::valueOf)
           .toArray(Long[]::new);
    

    【讨论】:

      【解决方案2】:

      您可以使用mapToLong(..) 函数并使用.toArray() 作为收集

      long[] longIds = setIds.stream().mapToLong(Long::parseLong).toArray();
      

      但是,对于打印,您需要在数组上循环或使用流

      Arrays.stream(longIds).forEach(System.out::println);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 2011-08-24
        • 2015-10-06
        • 2021-06-22
        • 1970-01-01
        相关资源
        最近更新 更多