当前位置: 首页 > 知识库问答 >
问题:

使用带连接字符分隔符的收集器

师俊健
2023-03-14

我正在构建一个名为“id”的查询参数,它是一个列表,所以我有类似于localhost:8080/application?id=1

(我知道我的方法不够,我需要写第一个?id=)

方法

public Map<Long, String> getSkus(List<ItemPedido> itensPedido) {
    Map<Long, String> skus = new HashMap<>();
    String ids = itensPedido.stream()
            .filter(i -> i.getProduto() != null)
            .map(i -> i.getProduto().getId())
            .collect(Collectors.joining("&id="));
    //TODO 
    return skus;
}

我的问题是:为什么我收到这个错误在Collectors.joining("

no suitable method found for collect(java.util.stream.Collector<java.lang.CharSequence,capture#1 of ?,java.lang.String>)
[ERROR]     method java.util.stream.Stream.<R>collect(java.util.function.Supplier<R>,java.util.function.BiConsumer<R,? super java.lang.Long>,java.util.function.BiConsumer<R,R>) is not applicable
[ERROR]       (cannot infer type-variable(s) R
[ERROR]         (actual and formal argument lists differ in length))
[ERROR]     method java.util.stream.Stream.<R,A>collect(java.util.stream.Collector<? super java.lang.Long,A,R>) is not applicable
[ERROR]       (cannot infer type-variable(s) R,A
[ERROR]         (argument mismatch; java.util.stream.Collector<java.lang.CharSequence,capture#1 of ?,java.lang.String> cannot be converted to java.util.stream.Collector<? super java.lang.Long,A,R>))

我正在使用OpenJDK

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

共有1个答案

张昊穹
2023-03-14

将流映射到字符串流:

.map(i -> i.getProduto().getId().toString())
 类似资料:
  • 我想显示一个项目列表,并使用“.” 我对此进行了研究,发现RecyclerView有一个内置的ItemDecoration功能。然而,我只能找到如何画一条线: 从我所看到的,您必须为此使用可绘制的,并且隐藏最后一个分隔符仍然不是很方便。 我发现的另一个选项是在RecyclerView的适配器内创建异构布局:https://guides.codepath.com/android/Heterogeno

  • 问题内容: 在大量的Unicode字符中,有一些实际上代表多个字符,例如U + FB00连字ff表示两个’f’字符。有什么容易的方法可以将这样的字符转换成多个单个字符?最好是在标准Java API中可用的东西,但是如果需要,我可以引用一个外部库。 问题答案: U + FB00是兼容字符。通常,Unicode不支持连字的单独代码点(认为是否使用连字以及何时使用连字是布局决定,并且不影响数据的存储方式)

  • 我有两组说: 我想得到一个集合,其中包括第一个集合的元素与第二个集合的每个元素连接,以及一个分隔符,即输出应该是: (这里.是我的分隔符) 我最初认为可以通过流式传输第一个集合并应用<code>收集器来实现这一点。在第二个元素上加入(),但这不能解决我的需要。

  • 我想拆分从蓝牙获得的字符串。我正在使用 以前用分裂字符串做过。如果我在没有分隔符的情况下得到了大量的数据,应用程序就会崩溃,同时试图做不可能的事情。 如何检查是否有分隔符,然后继续拆分或跳过它?

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(

  • 问题内容: 假设我有一个数组: 而且我需要使用分隔符(例如)来连接其元素,因此结果应该是这样的字符串: 我该怎么办? PS: 是的,我知道这件事和这篇文章,但是它的解决方案不适用于一系列原语。 问题答案: 这是我想出的。有几种方法可以执行此操作,它们取决于您使用的工具。 使用和来自Common Lang : 您不能只使用它,因为它没有方法的重载版本。虽然,它有方法。 适用于1.2以上的任何Java