带有泛型的java 8收集器

时间:2016-02-01 14:04:06

标签: java generics java-stream

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

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

我想从List<Long>获得Collection<Transfer>,其中包含来自Collection<Transfer>的所有ID,例如

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

令我困惑的是这个丑陋的演员:

(List<Long>) transfers.stream()

有什么办法可以避免吗?

1 个答案:

答案 0 :(得分:1)

假设您的getId()方法返回类型为longLong,则此强制转换绝对不必要。你可以写

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