【问题标题】:java 8 collectors for streams with generics用于泛型流的 java 8 收集器
【发布时间】:2016-02-01 14:04:06
【问题描述】:

我有一个长字段类(原始类型):

class Transfer {
       private long id;
       //gets sets
}

我想从Collection<Transfer> 获得一个List<Long>,它将包含来自Collection<Transfer> 的所有ID,例如

Collection<Transfer> transfers = ..;
List<Long> ids = (List<Long>) transfers.stream().map(f -> f.getId()).collect(Collectors.toList());

让我困惑的是这个丑陋的演员阵容:

(List<Long>) transfers.stream()

有什么办法可以避免吗?

【问题讨论】:

  • 你不需要投射它。将在没有其他信息的情况下推断列表的类型。您也可以在 map 方法中使用方法引用来使代码更清晰:.map(Tranfer::getId)

标签: java generics java-stream


【解决方案1】:

假设您的getId() 方法返回类型是longLong,那么这个转换是绝对没有必要的。你可以写

List<Long> ids = transfers.stream().map(f -> f.getId()).collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多