【问题标题】:Convert from Arrays.asList to Array从 Arrays.asList 转换为 Array
【发布时间】:2019-02-28 12:53:25
【问题描述】:

我的代码如下:

fieldsToFilter.stream()
    .map(e -> Arrays.asList(
        Filters.ne(e, ""),
        Filters.exists(e, true)
     ))
     .toArray(Bson[]::new))

在执行时我得到java.lang.ArrayStoreException: java.util.Arrays$ArrayList

Filters.existsFilters.ne 返回新的 Bson 实例。请参阅docs

感谢任何帮助

【问题讨论】:

  • 为什么不只是new Bson[]{Filters.ne(e, ""), Filters.exists(e, true)}
  • 请问您的预期结果是什么?
  • @OleV.V.似乎是Bson[] 类型
  • 是的,@nullpointer,但是要多长时间以及包含哪些内容?
  • @OleV.V.看来OP想为mongodb创建一个过滤器

标签: java java-8 mongodb-query java-stream bson


【解决方案1】:

您可以使用flatMap 代替map

Stream.of 而不是Arrays.asList

Bson[] result = fieldsToFilter.stream()
                   .flatMap(e -> Stream.of(Filters.ne(e, "") , Filters.exists(e, true)))
                   .toArray(Bson[]::new);

【讨论】:

  • Stream.of() 必须使用,因为Arrays.stream() 方法不接受可变参数
  • 正确@Lino,对不起,我正在使用我的手机:(我改变了它
  • 如果是这样的话,Arrays.asList(..., ...).stream() 也能正常工作。 @Lino
  • @nullpointer 将首先消除 List 的创建
猜你喜欢
  • 2013-05-20
  • 2016-09-12
  • 2016-10-25
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2019-07-12
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多