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

如何在Java8中使用对方付费呼叫?

昝阳嘉
2023-03-14

假设我们有一段无聊的代码,我们都必须使用:

ArrayList<Long> ids = new ArrayList<Long>();
for (MyObj obj : myList){
    ids.add(obj.getId());
}

切换到Java 8后,我的IDE告诉我,我可以将此代码替换为对方付费呼叫,它会自动生成:

ArrayList<Long> ids = myList.stream().map(MyObj::getId).collect(Collectors.toList());

然而,这给了我一个错误:

Steam中的collect(java.util.stream.Collector)不能应用于:(java.util.stream.Collector,capture,java.util.List)

我尝试转换参数,但它给了我未定义的AR,IDE没有给出任何建议。

我很好奇,在这种情况下,您如何使用对方付费电话,而我找不到任何可以正确指导我的信息。有人能帮忙吗?

共有2个答案

林英锐
2023-03-14

我使用了很多收集器块,在那里我创建了一个空数组,并使用循环填充它,所以我决定我需要一个自己的实用程序类,不要再写相同的行广告,这里是:

public class Collections {

    public static <T, O> List<T> collect(Set<O> items, Function<? super O, ? extends T> mapper) {

    return items.stream().map(mapper).collect(Collectors.toCollection(ArrayList::new));
}

}

并像这样使用它

List<Product> prods = Collections.collect(basket.getOrderItems(), OrderItem::getProduct);

还是像这样

List<Long> prods = Collections.collect(basket.getOrderItems(), (item)->item.getProduct().getId());

虽然看起来更容易阅读,但在这种情况下,流似乎要慢一点,看这里

燕靖
2023-03-14

问题是Collectors.toList返回一个List

List<Long> ids = remove.stream()
        .map(MyObj::getId)
        .collect(Collectors.toList());

编程到界面

从留档:

返回一个收集器,该收集器将输入元素累加到一个新的列表。对于返回的列表的类型、可变性、可序列化性或线程安全性没有任何保证;如果需要对返回的列表进行更多控制,请使用收集(供应商)

强调我的-你甚至不能假设返回的List是可变的,更不用说它是一个特定的类了。如果你想要一个ArrayList

ArrayList<Long> ids = remove.stream()
        .map(MyObj::getId)
        .collect(Collectors.toCollection(ArrayList::new));

还请注意,通常使用Java 8API导入静态,以便添加:

import static java.util.stream.Collectors.toCollection;

(我讨厌starredimport static,它只会污染名称空间并增加混乱。但是选择性的import static,尤其是Java 8实用程序类,可以大大减少冗余代码)

会导致:

ArrayList<Long> ids = remove.stream()
        .map(MyObj::getId)
        .collect(toCollection(ArrayList::new));
 类似资料:
  • 标准版 个人用户可以在账户页面充值并购买 精益版 我们为企业用户推出的全面精益实践版本,提供标准版 DaoCloud Services,Cloud Edition DCE, DaoVoice服务,覆盖了精益研发,精益运维,精益运营。如需要了解详情,请跟我们联系。 付费方式 网上支付:DaoCloud 平台支持通过微信扫码和支付宝扫码的方式付款,您在用户中心点击支付后,可以在弹出的窗口中选择支付方式

  • 我对如何在AOP中使用Fegn客户端很感兴趣。例如: 应用程序编程接口: 配置: 但我不知道如何“拦截”api方法调用。我哪里出错了? 更新: 我的Spring课注解:

  • 很多WordPress的付费插件是基于GPL协议的,于是就有人把这些插件弄到自己的网站提供免费下载,搜索“GPL Download”你能找到很多这种网站。它们给我们提供了免费试用WordPress付费插件的机会。 GPLDL gpldl.com是一个风格简洁,导航简单且信息清晰的网站,它有很多付费的插件和主题,以及WooCommerce的付费插件。 列举一些这个站点能免费下载到的WordPress

  • 但是上行和下行都不起作用 当我使用上行链路或下行链路时,我的应用程序行为不端,而当我使用其他来源时,我的应用程序工作正常

  • 问题内容: 我需要从被叫方获取呼叫者信息(什么文件/什么行)。我了解到可以为此目的使用inpect模块,但不能完全使用它。 如何使用inspect获取那些信息?还是有其他方法来获取信息? 问题答案: 呼叫者的帧比当前帧高一帧。您可以用来查找呼叫者的框架。然后使用inspect.getframeinfo获取调用者的文件名和行号。

  • 我正在尝试使用它的RESTAPI创建Paypal支付(https://developer.paypal.com/docs/integration/direct/payments/paypal-payments/),但我找不到如何将付款发送到第三方Paypal业务帐户。可以使用RESTAPI吗?我知道这可以通过使用Paypal SDK for Asp来完成。net,但不幸的是,没有可用于asp的sd